单引号闭合,列数为三列,但是没有期待的1 2 3回显,而是显示wrong pass。
尝试报错注入时发现过滤了圆括号,网上搜索似乎也没找到能绕过使用圆括号的方法,那么按以往爆库爆表爆字段的方法似乎无法使用了
在响应报文找到一段注释,解码后发现是这样的,数据库根据我们输入的用户名查找三列信息
select * from user where username = '$name'
我们发现当用户名填在第二列时,回显从wrong user变成了wrong pass,说明sql查询时先查询了username存在性
根据经验这里猜测第三列存放的是账号对应的密码,而从sql库中获取密码后就会与我们输入的pw作对比,如果相等则成功登入。(这里莫名其妙地sqli注入的目的从爆库变成了登录)
也就是说只要我们select的第三列和我们输入的pw相等就能成功登入。
我先尝试了明文存储,失败了,因为一般也不会明文存储隐私信息在数据库内
这里尝试MD5加密,成功登入,出现了flag
第一次接触这种题,属实是摸不着头脑,因为正常思路目的是爆库在库里找到flag字段,这道题不是这么想的,而是把目标放在了绕过原有的密码成功登入。