暴力破解-基于Pikachu的学习
暴力破解
前置burp的知识(Intruder爆破的四种模式)
1. Sniper(狙击手模式)
它使用一组Payload集合,依次爆破被§标志的爆破点。
如果爆破点设置一个,payload设置10个,就执行10次;如果爆破点设置两个,则执行20次。
一般这个模式下只设置一个爆破点,因为如果用户名和密码都不知道的情况下不会使用该模式去爆破。通常用于在知道用户名后,对密码进行爆破。
2. Battering ram(破城槌模式)
它使用一组Payload集合,同时爆破被§标志的爆破点。
无论爆破点设置几个,payload设置10个,就执行10次。
3. Pitchfork(音叉模式)
同时爆破被§标志的爆破点,爆破点1指定payload1,爆破点2指定payload2。
无论爆破点设置几个,payload1设置10个,payload2设置10个,就执行10次。
并且一般按照payload少的执行,如payload1设置10个,payload2设置9个,就执行9次。
4. Cluster bomb(集束炸弹)
同时爆破被§标志的爆破点,爆破点1指定payload1,爆破点2指定payload2,依次使用payload1与payload2的组合进行爆破。
payload1设置10个,payload2设置9个,就执行10*10=90次。
基于表单的爆破(没有验证)
直接丢入burp进行暴力破解
有验证码的爆破(验证码绕过)
实验原理
验证码用来防止登录暴力破解、防止机器恶意注册。具体是利用验证码影响如Burp Suite这类软件进行攻击。
验证码在后台不过期,导致可以长期被使用;
验证码校验不严格,逻辑出现问题;
验证码设计的太过简单和有规律,容易被猜解
Server端产生验证码
例:Pikachu(验证码绕过(on server))
输入用户名和账号密码,看回显(正确的验证码)
输入空的验证码以及错误的验证码尝试
然后重新输入当时正确的那个验证码,后来发现这个验证码长期有效,有效时间很长,可以爆破。
然后Burpsuite跑一下,暴力破解成功。
Client端产生验证码
例:Pikachu(验证码绕过(on client))
输入用户名和密码以及正确的验证码,抓包查看回显,发现了一串验证码的jjs代码
var code; //在全局 定义验证码
function createCode() {
code = "";
var codeLength = 5;//验证码的长度
var checkCode = document.getElementById("checkCode");
var selectChar = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');//所有候选组成验证码的字符,当然也可以用中文的
for (var i = 0; i < codeLength; i++) {
var charIndex = Math.floor(Math.random() * 36);
code += selectChar[charIndex];
}
//alert(code);
if (checkCode) {
checkCode.className = "code";
checkCode.value = code;
}
}
function validate() {
var inputCode = document.querySelector('#bf_client .vcode').value;
if (inputCode.length <= 0) {
alert("请输入验证码!");
return false;
} else if (inputCode != code) {
alert("验证码输入错误!");
createCode();//刷新验证码
return false;
}
else {
return true;
}
}
createCode();
然后浏览器禁用Js代码,便可暴力破解。
添加token防止爆破
输入账号密码然后burp抓包:
有两次发包可知:token值是一直在变化的,但是从客户端的相应包来看,验证码是由客户端生成的,这时候就需要用到burp的音叉模式去爆破。
设置为音叉模式爆破:
接下来添加token值的爆破,要将相应包里的token值作为发送包的值,采用递归搜索,然后设置,添加规则。
重定向设置
重定向设置成:always总是 ,用于动态获取token,下次请求的参数值,并且设置线程数为1
然后开始爆破,就成功得到密码了