密码重置思路-小密圈的一道题
考验技能:黑盒逻辑思考思维
提示:http://gh0st.cn/archives/2018-04-18/1 (文中出现过这个思路)
题目链接:已经下线(密码重置)
一般来说,很多人应该先走一遍流程:
走流程- 验证码发送
返回包:
- 验证码验证
错误返回:
流程分析 察言观色如上是发送验证码请求对应的响应报文,从报文可以获取到如下的信息:
- 后端验证验证码的方式是基于SESSION会话ID的
- 验证码的形势是4位数纯数字
四位数纯数字,爆破一下?可是问题来了~
错误三次之后就提示失效了验证码:
怎么办?这是一道考思维的题目,国内太多的逻辑漏洞的文章了,可是大多数人学习的是1:1的学习,不会变通。逻辑漏洞不仅仅存在于固有的业务逻辑上,还有代码逻辑~打开你的黑盒测试思维,任何点你都只能猜测,所以为什么不多猜猜?
文章中写过会有万能密码的存在:
测试下在这里并不存在,没有这样的缺陷,这时候你就需要考虑更多的东西,不要做个“表面性”测试的“白帽子”~
之前说了错误三次验证码会失效,但是否是真的失效了?假设没有失效只是“表面性”的输出失效呢?
思考后台代码逻辑,参考我提示中链接的文章:
在这里代入到密码重置这一环节是否有用呢?来测试下:
这里多了一线生机,因为提示了密码错误,而不是失效,那么是否能借助这个来绕过次数限制呢?
在这里你可以选择使用Python来帮助你,但我认为这完全没必要,因为BurpSuite解决了一切:
数据包发送到intruder模块,设置attack type为Pitchfork,设置好payload位置:
Pitchfork的工作模式是多组的,如上我设置了两个payload位置,使用这个模式需要两个payload的数量是一样的,发送的请求为A[1]对B[1]。
设置payload:
第一个为字符块(Character blocks)-这种类型的Payload是指使用一个给出的输入字符串,根据指定的设置产生指定大小的字符块,表现形式为生成指定长度的字符串。
第二个为数字(Numbers)-这种类型的Payload是指根据配置,生成一系列的数字作为Payload。
测试发现真实可用:
总结黑盒测试的精华是什么?Fuzzing.
你现在掌握的思路归根到底都是Fuzzing的结晶。
在漏洞挖掘中打开你的思维,加油~