在手工注入进行盲注时,一个一个字符测试工程量过大,这时我们就可以配合burp-suite的intruder模块进行半自动化注入

下面只提供思路及简单过程,盲注具体方法请参看前面文章

例如:我们已经测得某数据库及其第一个表名的长度为6,接下来就要获取第一个表名的值,语句如下:

http://127.0.0.1/sqli-labs/Less-1/?id=1' and (select ord(substr(table_name,1,1)) from information_schema.tables where table_schema=database() limit 0,1)=6 --+

正常做法就是不断替换6的值,得到正确数字后转化为字符型,再改变substr()里面截取字符的位数来测试下一个值,直到测得所有得值就是表名,可以见的过于繁琐,下面就为大家讲解怎么配合burpsuite的暴力破解模块加快测试速度


首先使用bp截取获取表名的请求,发送到intruder模块

我们先分析一下我们的需求,我们想让bp先依此测试完表名的这6个字符

然后就能确定我们需要设置的变量

  1. substr(table_name,1,1)中要控制1的递增来让我们测试截取的表名字符的递增,直到递增到最后一个停止
  2. 要控制我们截取转化为ascii码后判断等于的值,让其递增挨个测试,从1到127(ASCII的范围就是1到127,包括了所有的字符)

确定intruder模块的攻击方式

用表格来演示我们测试的过程

substr(table_name,1,1)1
substr(table_name,1,1)2
........
substr(table_name,1,1)127
substr(table_name,2,1)1
substr(table_name,2,1)2
.........
substr(table_name,6,1)127
测试过程

从上表我们很直观的看到我们的两个变量是一对多的关系,所以选择攻击类型为:clusterbomb

增加两个需要爆破的变量

然后选择字典

payload1字典选择为1-6即可(我们所要测的表名为6位)

payload2字典选择为1-127(ASCII的范围就是1-127)

然后开始爆破,等爆破完成点按长度排序,就会有下面结果,依此转换成字符就是我们的第一个表名

同理可以测的其他表名,列名及数据,这样的话比纯手工就快多了


一个热爱技术的白帽子