发布于2022年11月4日3年前 基于servier端1.首先尝试输入错误的用户名,密码,验证码。返回验证码不正确2.输入错误的用户名密码,输入正确的验证码。返回用户名或者密码不正确83.输入错误的用户名密码,不输入验证码返回验证码不能为空然后刷新页面,会生出新的验证码。可以发现服务器对验证码的有效性做过校验,一切逻辑正常。但是如果这个验证码在后台长期不过期,或者过期时间较长。足够我们去爆破用户名和密码,那么就会产生漏洞。1.输入错误的用户名和密码,然后输入正确的验证码。然后将包发送到repeater模块中注意:如果提示密码错误,请刷新页面。获取新的验证码即可。然后添加到intruder设置参数 跑出结果即可。client端不安全的验证码——on client(只在前端处理)绕过步骤:1、打开burp suite,打开PHP study,打开Pikachu,点击on client选项2、输入一次正确的验证码,随意输入账号密码,进行抓包。抓包选中,右键发送至repeater4、点击raw,随意改一下验证码,点击“go”,若出现用户名或密码错误,而不是验证码错误,则验证码只在前端处理,将地址发到intruder,直接暴力破解,无需考虑验证码。看,这里提示是用户名和密码错误,而不是验证码错误。也就是说,前端的这个js验证码就是吓唬人的。<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://blog.bbskali.cn/987.html按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
创建帐户或登录后发表意见