文章目录
- 通过不同响应枚举用户名
- 2FA 简单旁路
- 密码重置破坏逻辑
- 通过细微不同的响应枚举用户名
- 通过响应计时的用户名枚举
- 破解暴力保护,IP 封锁
- 通过帐户锁定的用户名枚举
- 2FA 破坏逻辑
- 暴力破解保持登录状态的 cookie
通过不同响应枚举用户名

就是所谓的暴力破解,用户名和密码的字典都给了
首先遍历用户名得到 atlas

同样方法得到密码2000
2FA 简单旁路

就是使用密码后还有个验证码,我们无法拿到对方的验证码,如何进行登录呢
先使用自己的账密登录


通过自己的电子邮件拿到验证码 ,成功登录后记录一下url
这个url提供了成功登录后的地址信息 也就是url/my-account
拿carlos:montoya进行登录后跳过验证码环节,直接访问/my-account
密码重置破坏逻辑

跟上面比较像

https://0a8e00b204609bacc0f64a2600d400ea.web-security-academy.net/forgot-password?temp-forgot-password-token=zClSL4YN2T76ZNfEqHE4A6wXFANxnbHq

抓包来分析修改密码时的包

删除URL和请求体中temp-forgot-password-token参数的value。将用户名参数更改为 carlos将新密码设置为想要的任何内容并发送请求。

然后carlos的密码就被改为了1234
通过细微不同的响应枚举用户名
也是暴力破解 ,不同的是,这次简单的看响应长度找正确结果不可行
可以设置一下返回有用的响应信息,以便分辨正确的结果


有一个结果没有. 就是他了
然后爆破密码 看长度或状态302跳转即可

通过响应计时的用户名枚举

这题的特点呢,首先需要X-Forwarded-For伪造ip,否则多次请求会封ip,但并不会检测ip格式,所以就1-100就行
然后这里的通过响应时间来进行区分,经过测试,如果用户名正确,则响应时间根据你设置密码的长度增加而增加。
用户名不正确则直接响应结束,所以这个点可以进行用户名爆破。
ip和username一一对应进行爆破(Pirchfork模块),响应时间长的即为正确用户名


ad的响应时间明显大很多,所以ad可能是用户名,有了用户名正常方法爆密码即可

ad : love
破解暴力保护,IP 封锁

这题的情况是: 错误登录只允许三次,否则要等待1分钟继续登录,可利用的点是我们可以正常登录自己的用户来重置次数。
所以在爆破carlos的密码时,中间要穿插正确的账号密码,准备这样的字典进行爆破。
为了方便呢,这两用户就交叉跑
carlos pass1
wiener peter
carlos pass2
wiener peter
准备如上的字典即可
账号好搞,密码字典写个脚本生成一下
with open('小脚本\pass.txt') as f:
c = f.readlines()
targ = open('小脚本\pass2.txt',"w")
s = 'peter'
for i in range(100):
targ.write(c[i])
targ.write(s+'\n')
targ.close()
一一对应爆破即可
通过帐户锁定的用户名枚举
判断是否是正确用户,每个账户需要多试,如果是正确用户,试多了会有某种错误提示。
基于这样的判断来爆破用户,
用集束炸弹来定义两个payload,第一个就是用户名,第二个变量在最后设置空,数量5个

然后爆密码即可
这里还可以添加一个Grep-Exteact提取错误信息

2FA 破坏逻辑

用wiener用户拿到验证码登录时,这里verify参数判断用户,验证码是4位纯数字。。就很好爆破

直接将verify设成carlos, 然后直接爆破验证码,md不知道哪里有问题

暴力破解保持登录状态的 cookie

先登录一遍,在Stay logged in状态下进行抓包分析

就是个简单的cookie 存储密码的md5 ,主要post传入的密码也需要爆破,一一对应
base64(username+':'+md5HashOfPassword)
在Payload processing下,依次添加以下规则。在提交请求之前,这些规则将按顺序应用于每个有效负载。
- 哈希:
MD5 - 添加前缀:
wiener: - 编码:
Base64-encode


![A - No Majority(DP 动态规划)[AtCoder Grand Contest 060]](https://img-blog.csdnimg.cn/e712376dc7534ed1b83a0414c37b6e7a.png)














