(0) 前言
Burpsuite的Intruder功能可以对目标进行多线程爆破,比如账号密码爆破,验证码爆破等。
如上图所示,Burpsuite有4种爆破方式,为了能更加清楚地观察每种方式的不同之处,我编写了一个简单的php页面。
<?php
$payload1 = $_GET['p1'];
$payload2 = $_GET['p2'];
$payload3 = $_GET['p3'];
echo $payload1.' '.$payload2.' '$payload3;
由于只定义一个参数的四种爆破方式都相同,我们在此只观察三个参数的爆破情况。设置浏览器代理,将页面的GET包抓取,并定义三个爆破参数p1、p2和p3。
(1) Sniper(狙击)
狙击方式只能加载一个Payload字典,为了能简易的观察并总结规律,我把Payload字典设置为 1,2,3,4。
爆破结果如下:
1 b c
2 b c
3 b c
4 b c
a 1 c
a 2 c
a 3 c
a 4 c
a b 1
a b 2
a b 3
a b 4
可以看出,每一个参数都会被单独的进行字典的遍历爆破,同时其他参数不受影响,请求总数为 参数×Payload字典的元素数。
(2) Battering ram(撞击)
参数和狙击方式的一样还是三个,也只能加载一个Payload字典,测试结果如下:
1 1 1
2 2 2
3 3 3
4 4 4
所有参数在一次请求内同时替换为一个Payload,请求总数为 Payload字典的元素数。
(3) Pitchfork(交叉)
交叉方式中要求你设置了几个参数,就要加载相同数量的Payload字典,如图所示:
我们这次将Payload字典1设置为 1,2,3,4,字典2设置为 y,x,z,字典3设置为 Y,X,测试结果如下:
1 y Y
2 x X
我们把字典3重新设置为 Y,X,Z,再次测试一次,结果如下:
1 y Y
2 x X
3 z Z
每次请求,3个参数会同时使用3个字典处在同一位的元素,请求总数为 元素最少的Payload字典的元素数。
(4) Cluster Bomb(集束炸弹)
同样要求使用3个Payload字典,我们将字典1设置为 1,2,字典2设置为 w,x,字典3设置为 a,b,测试结果如下:
1 w a
2 w a
1 y a
2 y a
1 w b
2 w b
1 y b
2 y b
每一种组合方式都存在,请求总数为 字典1元素个数×字典2元素个数×字典2元素个数。
灵活使用,好处多多。