sqli13

第十三关   POST - Double injection  - Single Quotes-string-with twist

1.从题目来看,应该是post型的单引号加括号的布尔盲注

盲注:盲注也是注入的一种,盲注一般分为布尔盲注和时间盲注。布尔盲注就是说页面的返回值只有两种, True 和 False。所以我们只能通过测试输入的注入语句为 Ture 或 False 来判断注入的效果,并通过这两种可能一步步得判断出数据库的信息。

2.进入第13关,界面如下

sqli13

3.随便输入一个账号密码,界面显示登陆失败

sqli13

 4.把密码删了,在账号后面加个单引号试试,为什么要删除密码,因为报出来的信息多一点,不信你试试

sqli13

 

 从上图我们可以大致猜测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

sqli13

 

 界面显示成功登陆,因为界面只会显示成功,或者失败,所以我们可以用盲注注出数据

6.我们用bp抓一下我们刚才的万能密码post包

sqli13

7.介绍一下我们要用到的函数

  length()  :   返回字符串的长度

  substr()  :   截取字符串,第一个参数字符串,第二个参数起始位(从1开始),第三个参数偏移量

  ascii()   :   返回字符的ascii码

8.使用上面的函数判断一下当前数据库的长度

sqli13

页面显示正常,所以可以推断数据库的长度是大于7的。再慢慢增大尝试,最终得到当前数据库长度为8。

9.爆出当前数据库名

if表判断,ascii表示把查出来的转成ascii码,substr截取字符串第一个参数要截取的字符串,第二个参数起始位,第三个参数偏移量

sqli13

sqli13

 

sqli13

 

爆出来了

sqli13

 通过同样的方法我们还可以爆出表,字段,数据,这里我就不说明了。

 

sqli13

上一篇:MySQL-02-授权及数据类型


下一篇:MySQL 幻读详解