如何利⽤burpsuite的intruder和Macro进⾏带验证码的密码爆
说明
burpsuite是做攻防渗透的⼀个常⽤⼯具,可以⽤来拦截http请求做修改、重放、替换、爆破、扫描等各种操作。在hackinglab上做某道练习题的时候,使⽤了burpsuite的intruder与MACRO等功能,现在针对题解做个记录。
准备⼯作
通过页⾯观察我们发现⾸页有submit登陆按钮,有获取⼿机验证码的链接,当点击验证码图⽚时验证码会发⽣改变,我们到了三个可以尝试利⽤的请求,可以分别做拦截查看具体的请求和结果。
⾸先拦截⾸页请求
通过该请求拦截,我们发现有隐藏信息,那就是⼿机验证码的取值范围是从100~999之间,那这个范围是可以直接做个字典来爆破出来的,我们可以⽣成⼀个字典⽂件。接下来我们拦截⼀下验证码更新的请求。
通过burpsuite我们发现,该请求返回的是⼀个图⽚⼆进制流,该图⽚是⼀个全数字的验证码。接下来再看⼀下登陆的请求。
我们重新发送⼀下图⽚验证码的获取请求,然后在发送⼀下数据提交请求,则显⽰“user_code or mobi_code error”。
现在来看的话,图⽚验证码应该是⼀次性的,既当每次登陆请求到达后台验证逻辑时,之前的图⽚验证码就会过期。如果想利⽤暴破⼿段来强⾏登陆的话,每次访问登陆请求之前需要先访问⼀下获取图⽚验证码的请求。
我们点击⼀下获取⼿机验证码链接,就显⽰了⼿机验证码已发送,除此之外没有其他有⽤的信息。⽽且通过之前登陆页⾸页的访问我们知
道,⼿机验证码是在⼀个已知的有限集合中,那就说明⼿机验证码是可以爆破出来的。现在只要让图⽚验证码准确识别出来就可以进⾏
intruder了。
破解图⽚验证码
破解图⽚验证码就需要做图⽚的字符识别,答主对这⽅⾯不是太懂,索性下载了⼀个开源的tesseract ocr。从⽹上个windows版本的
软件,然后下载安装即可。
安装完成之后需要配置环境变量,⼀⽅⾯是在PATH中加⼊tesseract ocr安装后所在⽬录,另⼀块是加⼊⼀个名为
TESSDATA_PREFIX的环境变量,值为所在安装⽬录中的tessdata⽬录。安装完成之后可以在dos终端输⼊ tesseract -v,显⽰版本号则
安装正确。
<?php
header('content-type:application/json;charset=utf-8');
$url = 'lab1.xseclab//vcode7_f7947d56f22133dbc85dda4f28530268/vcode.php';
$result = "error";
$ch = curl_init();
$timeout = 20;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIE, "PHPSESSID=975db232b65e274a92798918807e4676");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$img_content = curl_exec($ch);
curl_close($ch);
$fp = @fopen('../user_code/user_code.png', 'w+');
fwrite($fp, $img_content);
fclose($fp);
unset($img_content, $url);
/*
*generate mobile number
*/
$number = 0;
$countname = './';
if (file_exists($countname)) {
$fp = @fopen($countname, "r");
$number = fgets($fp, 10);
fclose($fp);
$number = $number + 1;
} else {
$number = 100;
}
$fp = @fopen($countname, "w+");
fwrite($fp, ''.$number);
fclose($fp);
/*
*  E:\software_install\tesseract_ocr\Tesseract-OCR
*    E:\software_install\vmware\phpstudy_pro\WWW\user_code\user_code.png
*    E:\software_install\vmware\phpstudy_pro\WWW\user_code\user_code
*/
$content = "user_code=";
system('E:\software_install\tesseract_ocr\ E:\software_install\vmware\phpstudy_pro\WWW\user_code\user_code.png E:\software_in $fp = @fopen('../user_code/', 'r');
$code_content = fread($fp, 4);
fclose($fp);
$content .= $code_content.";"."mobi_code=".$number.';';
用phpstudy搭建网站echo $content;
>
我们在编写的php程序中,多做了⼀些⼯作,⼀⽅⾯调⽤tesseract识别图⽚验证码,另⼀⽅⾯我们实现了⼀个从100~999的计数器功
能,同图⽚验证码⼀起返回到页⾯中。
配置burpsuite
在burpsuite中,选择Project options,到Macros,点击Add。在弹框中选择我们需要⼀起发送的两个请求,点击ok确认。
在弹框中,我们可以看到两个请求,第⼀个请求是我们⾃⼰搭建的获取图⽚验证码和⼿机验证码的请求req1,第⼆个请求是登陆的请求req2。req2是我们需要爆破的的请求,不过req2在每次爆破发送之前都需要发送⼀次req1,⽽且req2报⽂中需要提交的包体⾥⾯的user_code字段和mobi_code字段需要从req1中获取。
我们选中req1,点击 Configure item,在弹框中点击Add按钮,输⼊我们打算替换的内容的key值user_
code,然后在下⾯的req1的响应报⽂中选择user_code之后的数字即可,然后点击OK,返回上⼀级弹框在选择Add,按照同样的⽅法加⼊mobi_code,再选择OK。
mobi_code的地⽅,也选择第⼀项,然后点击OK。
两个请求均配置好了,这时候点击ok,Macros就配置好了。随后在Session Handing Rules中,点击Add,选择Run a post-request macro(我们需要在intruder中进⾏爆破,爆破时需要设置⼀个positions点,所以得选择Run a post-request macro)。在弹框中,选
中Macro的名字(此处是Macro 21),然后点击确定即可,后⾯的暂时⽤不到。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。