基于表单的暴力破解

Posted 提名-UTF_8

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于表单的暴力破解相关的知识,希望对你有一定的参考价值。

简单介绍暴力破解的手法

靶场环境:pikachu
简介:
基于表单的破解 一般登录的post登录框,一般没有进行验证码,手机号验证的登录框都是可以进行暴力破解的

我们在网页前端输入admin:admin发现报错

username or password is not exists~

进行抓包

攻击类型更改为cluster bomb类型 就是可以同时进行两个值的交叉爆破,把username password的位置添加好之后添加payload之后使用
然后点击第四个options窗口之后

在options里面在grep_match
里面前clear掉之后把刚刚提醒我们密码错误的提醒语句粘贴进去 因为有时候我们的字典很庞大,一个一个去看length很难观察出来,grep_matc可以很快的帮助我们返回信息跟你add的信息有差别的记录

验证码绕过(on server)在服务器端验证

验证码可以用来防止恶意注册,防止暴力破解,服务器端验证码常见问题
验证码在后台不过期,导致长期可以使用
验证码效验不严格,逻辑出现为问题
验证码设置的太过简单或者有逻辑规律,容易被猜解

验证码生成分逻辑
当我们刷新页面的时候,会向后台发送一个请求,后台收到请求后会生成一个验证码并在session中验证码保存下来

1.我们可以针对验证码进行测试
如果直接登录 会提醒 用户名不能为空
2.输入用户和密码直接login会显示验证码不能为空
3正常输入用户名和密码 验证码也输入正确的 页面会提示:
username or password is not exists~
也就说所有的条件我们必须满足 且验证码正确才可以通过检测
直接使用burp抓包进行测试

可以看到用户名密码与验证码都被传递了过来

这里重新输入一组用户名与密码

提醒我们验证码正确 只不过是用户或者密码错误
我们改一下用户名与密码 go 发现并没有提醒验证码错误 而是提醒用户名密码错误
这证明验证码长期有效的 我们可以直接发送到intruder模块
后续的设置同上操作即可

可以看出来我们已经发在绕过验证码的基础上进行了爆破
可以看出来 用户为:admin 密码:123456
以上的是验证码在服务器端的验证

严重码绕过on client

在客户端的js验证更容易被绕过
我们查看源代码可以发现一段js代码

 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();

发现是使用的是javascript生成的验证码 与验证两步
这里使用burP抓包时,发现前端输入验证码错误的会提醒 可见是前端验证

可见我们发送过来的数据 并没有提示我们验证码错误 而是提醒账号密码错误 所以我们就可以输入 特征依然是这个username or password is not exists

设置好之后就可以进行爆破 可以一次爆不出来 原因不太清楚 多试两次就出来了

爆破的时候下面这个选项勾选掉


特征的位置一定要添加进去

简单分享 大佬勿喷

以上是关于基于表单的暴力破解的主要内容,如果未能解决你的问题,请参考以下文章

pikachu靶场暴力破解专题

pkachu靶场1——暴力破解

pkachu靶场1——暴力破解

BurpSuite 基本使用之暴力破解

基于python实现暴力破解凯撒密码

Pikachu靶场通过记录