Pikachu靶场:暴力破解之验证码绕过(on server)
实验环境以及工具
Firefox浏览器、Burp Suite、Pikachu靶场
实验原理
验证码用来防止登录暴力破解、防止机器恶意注册。具体是利用验证码影响如Burp Suite这类软件进行攻击。
验证码在后台不过期,导致可以长期被使用;
验证码校验不严格,逻辑出现问题;
验证码设计的太过简单和有规律,容易被猜解
实验步骤
1.前期工作
先将Proxy中的intercept关闭,使其不进行拦截,让数据通过监听的端口。
输入正确用户名和密码,输入正确验证码弹出login success
空输入,直接点Login,弹出用户名不能为空
任意输入用户名和密码,不输入验证码,弹出验证码不能为空
任意输入用户名和密码,输入错误验证码,弹出验证码错误
任意输入用户名和密码,输入正确验证码弹出username or password is not exists~
最后在页面上敲出正确的验证码,任意输入用户名和密码,使其正常发出一个POST请求,然后在Burp Suite中将其发送到Repeater里。
2.使用Repeater测试验证码是否有效
将验证码部分删掉或乱写,若是能够正常的返回用户名不存在之类的就证明验证码无效,若返回验证码不能为空或验证码错误,则证明验证码有效。
这时我们输入正确的验证码,输入错误的用户名和密码,多次提交,看验证码是否有生存期。
说明这个验证码不是一码一用,甚至不点击刷新这个验证码,它就能一直用,生存期非常长。那么我们只需要固定验证码这个字符串,替换账号和密码就可以进行暴力破解。我们将Proxy里HTTP history的一个POST请求发送到Intruder里。
3.利用Intruder进行暴力破解
进入Positions,选择Cluster Bomb模块,将多余的变量删除,留下username和password两个变量,并且保证验证码字段与目标页面上的验证码一致。
在Payloads选项里找到Payload Sets,在Payload set里有两个选项,因为有两个变量。这里先设置变量1的字典。
在Payload type里选择Runtime file
同样方法配置好变量2
然后点击Start attack进行攻击,然后单击length进行排序可以看到一个长度比较小的,因为密码错误(username or password is not exists~)和密码正确(login success)所弹出的字符串长度不一样,所以可以根据返回页面的长度来判断是否成功。
总结
将Proxy的Intercept拦截关闭后,通过手动访问目标网页,然后提交表单后,在Proxy的HTTP history中找到最新的POST请求,将其发送到Repeater里进行发包和分析,发现位于后端的验证码生存期过长,并不能影响Burp Suite进行发包。那么将POST请求包发送到Intruder中,将对应的验证码设置好进行破解即可。