简单介绍暴力破解的手法
靶场环境:pikachu
简介:
基于表单的破解 一般登录的post登录框,一般没有进行验证码,手机号验证的登录框都是可以进行暴力破解的
我们在网页前端输入admin:admin发现报错
username or password is not exists~
进行抓包
攻击类型更改为cluster bomb类型 就是可以同时进行两个值的交叉爆破,把username password的位置添加好之后添加payload之后使用
然后点击第四个options窗口之后
在options里面在grep_match
里面前clear掉之后把刚刚提醒我们密码错误的提醒语句粘贴进去 因为有时候我们的字典很庞大,一个一个去看length很难观察出来,grep_matc可以很快的帮助我们返回信息跟你add的信息有差别的记录
验证码可以用来防止恶意注册,防止暴力破解,服务器端验证码常见问题
验证码在后台不过期,导致长期可以使用
验证码效验不严格,逻辑出现为问题
验证码设置的太过简单或者有逻辑规律,容易被猜解
验证码生成分逻辑
当我们刷新页面的时候,会向后台发送一个请求,后台收到请求后会生成一个验证码并在session中验证码保存下来
1.我们可以针对验证码进行测试
如果直接登录 会提醒 用户名不能为空
2.输入用户和密码直接login会显示验证码不能为空
3正常输入用户名和密码 验证码也输入正确的 页面会提示:
username or password is not exists~
也就说所有的条件我们必须满足 且验证码正确才可以通过检测
直接使用burp抓包进行测试
可以看到用户名密码与验证码都被传递了过来
这里重新输入一组用户名与密码
提醒我们验证码正确 只不过是用户或者密码错误
我们改一下用户名与密码 go 发现并没有提醒验证码错误 而是提醒用户名密码错误
这证明验证码长期有效的 我们可以直接发送到intruder模块
后续的设置同上 *** 作即可
可以看出来我们已经发在绕过验证码的基础上进行了爆破
可以看出来 用户为:admin 密码:123456
以上的是验证码在服务器端的验证
在客户端的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
设置好之后就可以进行爆破 可以一次爆不出来 原因不太清楚 多试两次就出来了
爆破的时候下面这个选项勾选掉
特征的位置一定要添加进去
简单分享 大佬勿喷
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)