1、基于表单的暴力破解
提示中有三个用户的用户名和密码。
使用bp抓包,可以看到输入的用户名和密码的内容。
将包发送给 intruder attack,攻击类型选择Clusterbomb,为用户名和密码的内容添加攻击载荷标记
在位置1添加用户名表单
位置2添加密码表单
右上角开始攻击, 通过返回长度大小差异判断用户名密码是否正确
2、验证码绕过(on server)
用户名和密码依然是那三个,提示说验证码一直有效,可以抓包验证一下,随意输入用户名密码,输入正确的验证码 ,bp抓包,将抓到的包发送给重发器(repeater)
发现只报了用户名或密码不存在
修改用户名和密码,不改验证码看看是否有变化
发现报错一致,修改验证码,发现报错验证码错误
由此可以得出结论,同一正确的验证码可以通过验证,并且可以重复使用不会失效。
将包发送给intruder,和上一个暴力破解步骤一样,不修改验证码,只爆破用户名密码即可。
通过长度判断爆破出的用户名密码。
3、验证码绕过(on client)
提示看看前端js源码,通过观察我们发现 验证码是由前端js代码自动生成的
如果输入错误的验证码,前端会弹窗告知验证码错误
但是,由于这个验证码是前端js自动生成的,他是否会参与后端的校验呢?我们抓包分析一下。在重发器中输入错误的用户名密码和错误验证码,我们发现只有用户名密码不存在,并未对验证码做校验,那么这个验证码属于是形同虚设。
直接抓包改包,将用户名密码修改正确,空缺验证码,放包
发现,登录成功!
3、token防爆破?
他说没什么鸟用吗?抓包看一下token会给爆破带来什么样的影响。我们发现两次抓包token值不一致,意味着爆破的过程中,每测试一条数据也要更新一条token值。
发送给重发器获得本次返回包中携带的token
再转发到inturde,选择Pitchfork鱼叉模式,标记要跑的参数
攻击载荷位置1添加密码表单
进入选项设置,将线程数调整值为1,因为token是一次性的。
跑token需要用到grep-extact模块
点击添加, 重新获得回复,拿到token值,选中他左上角会自动标记值在包中的位置,点击ok
第二个参数选择递归搜索recursive grep模式,有效载荷填写重发器中获得的token,然后开始爆破!通过比对长度,确定密码