第十三关 POST - Double injection - Single Quotes-string-with twist
1.从题目来看,应该是post型的单引号加括号的布尔盲注
盲注:盲注也是注入的一种,盲注一般分为布尔盲注和时间盲注。布尔盲注就是说页面的返回值只有两种, True 和 False。所以我们只能通过测试输入的注入语句为 Ture 或 False 来判断注入的效果,并通过这两种可能一步步得判断出数据库的信息。
2.进入第13关,界面如下
3.随便输入一个账号密码,界面显示登陆失败
4.把密码删了,在账号后面加个单引号试试,为什么要删除密码,因为报出来的信息多一点,不信你试试
从上图我们可以大致猜测sql语句为:select username,password from users where username=(‘账号‘) and password=(‘密码‘) limit 0,1
5.知道sql的语句了,我们可以构造一个万能密码
select username,password from users where username=(‘adf‘) or 1=1 #‘) and password=(‘ ‘) limit 0,1
界面显示成功登陆,因为界面只会显示成功,或者失败,所以我们可以用盲注注出数据
6.我们用bp抓一下我们刚才的万能密码post包
7.介绍一下我们要用到的函数
length() : 返回字符串的长度
substr() : 截取字符串,第一个参数字符串,第二个参数起始位(从1开始),第三个参数偏移量
ascii() : 返回字符的ascii码
8.使用上面的函数判断一下当前数据库的长度
页面显示正常,所以可以推断数据库的长度是大于7的。再慢慢增大尝试,最终得到当前数据库长度为8。
9.爆出当前数据库名
if表判断,ascii表示把查出来的转成ascii码,substr截取字符串第一个参数要截取的字符串,第二个参数起始位,第三个参数偏移量
爆出来了
通过同样的方法我们还可以爆出表,字段,数据,这里我就不说明了。