带有条件响应的盲 SQL 注入
题目:此实验室包含一个 SQL 盲注漏洞。该应用程序使用跟踪 Cookie 进行分析,并执行包含已提交 Cookie 值的 SQL 查询。
SQL 查询的结果不会返回,也不会显示任何错误消息。但是, Welcome back如果查询返回任何行,应用程序会在页面中包含一条消息。
总而言之带有响应的盲sql就像是一个可以回答你是不是的海龟汤,你可以通过条件的真假来获取你想要的信息
我们打开这个实验室,并使用Burpsuite来拦截首页,并将它发送给repeater:

回到原来实验室的页面,我们发现只要是第二次进入,页面的右上角就会返回:Welcome back!

我们又回到Burpsuite尝试在cookie后面输入Cookie: TrackingId=3IBuwB3cAeSggHgb'and'1'='1,并在response的搜索栏中输入Welcome back!,发现确实存在

尝试改变后面的布尔条件为Cookie: TrackingId=3IBuwB3cAeSggHgb'and'1'='2,后在response中查询Welcome back!发现不存在;说明我们找到了条件来响应我们的注入!

我们如果想要找到管理员的密码,就得先找到对应的数据存储在哪个表里面,一般的表会命名为user,我们通过该语句:Cookie: TrackingId=3IBuwB3cAeSggHgb'and(SELECT 'a' FROM users limit 1)='a来判断是否存在users这个表:发现存在

后面我们对应在这个表里找到administrator这个用户,发现也存在:

这样我们找到了这个用户,但是想要登陆这个账户还需要对应的密码,我们首先可以先判断这个密码的长度,将cookie改为:Cookie: TrackingId=3IBuwB3cAeSggHgb'and(SELECT username FROM users WHERE username = 'administrator' and length(password)>1)='administrator;通过结果的输出来判断密码的长度为多少,但是我们试了几个数字,发现这个密码的长度不在个位数,所以我们选择将这个页面发送给intruder,进行枚举

爆破范围我们选择1-100(正常的密码的长度不应该会超过这个范围),然后开始攻击(start attack,我们发现长度在19和20之间发生了改变,可以知道密码的长度应该在20,因为我们的条件是“>”,所以在超过密码范围时,长度会发生变化)

确认长度之后,我们需要确认密码内容,这里需要用到substring函数,函数的使用方式为:
SUBSTRING(字符串, 开始位置, 长度)
因此我们可以将cookie改为这种形式:Cookie: TrackingId=3IBuwB3cAeSggHgb'and(SELECT SUBSTRING(password,1,1)from users where username= 'administrator')='a'--
该句话的目的是判断administrator该用户密码的第一位是否是a,当我们将该句话发送出去,很显然response中没有Welcome back!,说明第一个字母不是a,一个个试太浪费时间,我们可以直接把这个页面发送给intruder,将substring的第一个1和最后的a添加上:记得这里的攻击类型改为cluster bomb,可以两个一起攻击

1这里的页面是这样的,我们进行数字爆破:

2这里的是密码的内容爆破,这里前面暗示了一下,密码的内容只有字母和数字,我们将payload改为这样:

然后开始攻击:可以看到有720条记录,我们可以点击上面的筛选栏,输入Welcome back,点击后会出现20条筛选记录,这正对应着我们的密码:一开始顺序是混乱的,可以点击payload1按照升序或降序来排列:

以上就是带有条件响应的盲 SQL 注入,希望看到的可以点个赞和收藏,谢谢🙏