暴力破解(基于验证码的绕过)pikachu

2021-12-17 17:53:07 浏览数 (1)

基于servier端

  • 1.首先尝试输入错误的用户名,密码,验证码。

返回验证码不正确

  • 2.输入错误的用户名密码,输入正确的验证码。

返回用户名或者密码不正确

8

  • 3.输入错误的用户名密码,不输入验证码

返回验证码不能为空

然后刷新页面,会生出新的验证码。

可以发现服务器对验证码的有效性做过校验,一切逻辑正常。

但是如果这个验证码在后台长期不过期,或者过期时间较长。足够我们去爆破用户名和密码,那么就会产生漏洞。

1.输入错误的用户名和密码,然后输入正确的验证码。

然后将包发送到repeater模块中

注意:如果提示密码错误,请刷新页面。获取新的验证码即可。

然后添加到intruder

设置参数 跑出结果即可。

client端

不安全的验证码——on client(只在前端处理)绕过

步骤:

1、打开burp suite,打开PHP study,打开Pikachu,点击on client选项

2、输入一次正确的验证码,随意输入账号密码,进行抓包。

抓包

选中,右键发送至repeater

4、点击raw,随意改一下验证码,点击“go”,若出现用户名或密码错误,而不是验证码错误,则验证码只在前端处理,将地址发到intruder,直接暴力破解,无需考虑验证码。

看,这里提示是用户名和密码错误,而不是验证码错误。

也就是说,前端的这个js验证码就是吓唬人的。

代码语言:javascript复制
<script language="javascript" type="text/javascript">
    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();
</script>

接着,我们连着上述步骤进行暴力破解即可!

版权属于:逍遥子大表哥

本文链接:https://cloud.tencent.com/developer/article/1920880

按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。

0 人点赞