密码重置思路-小密圈的一道题

前言

考验技能:黑盒逻辑思考思维

提示:http://gh0st.cn/archives/2018-04-18/1 (文中出现过这个思路)

题目链接:已经下线(密码重置)

一般来说,很多人应该先走一遍流程:

走流程

  1. 验证码发送

0x01

返回包:

0x02

  1. 验证码验证

0x03

错误返回:

0x04

流程分析

察言观色

0x06

如上是发送验证码请求对应的响应报文,从报文可以获取到如下的信息:

  1. 后端验证验证码的方式是基于SESSION会话ID的
  2. 验证码的形势是4位数纯数字

缺陷发现

四位数纯数字,爆破一下?可是问题来了~

错误三次之后就提示失效了验证码:

0x05

怎么办?这是一道考思维的题目,国内太多的逻辑漏洞的文章了,可是大多数人学习的是1:1的学习,不会变通。逻辑漏洞不仅仅存在于固有的业务逻辑上,还有代码逻辑~打开你的黑盒测试思维,任何点你都只能猜测,所以为什么不多猜猜?

文章中写过会有万能密码的存在:

0x07

测试下在这里并不存在,没有这样的缺陷,这时候你就需要考虑更多的东西,不要做个“表面性”测试的“白帽子”~

之前说了错误三次验证码会失效,但是否是真的失效了?假设没有失效只是“表面性”的输出失效呢?

思考后台代码逻辑,参考我提示中链接的文章:

0x08

在这里代入到密码重置这一环节是否有用呢?来测试下:

0x09

这里多了一线生机,因为提示了密码错误,而不是失效,那么是否能借助这个来绕过次数限制呢?

在这里你可以选择使用Python来帮助你,但我认为这完全没必要,因为BurpSuite解决了一切:

数据包发送到intruder模块,设置attack type为Pitchfork,设置好payload位置:

0x10

Pitchfork的工作模式是多组的,如上我设置了两个payload位置,使用这个模式需要两个payload的数量是一样的,发送的请求为A[1]对B[1]。

设置payload:

第一个为字符块(Character blocks)-这种类型的Payload是指使用一个给出的输入字符串,根据指定的设置产生指定大小的字符块,表现形式为生成指定长度的字符串。

第二个为数字(Numbers)-这种类型的Payload是指根据配置,生成一系列的数字作为Payload。

0x11

测试发现真实可用:

0x12

总结

黑盒测试的精华是什么?Fuzzing.

你现在掌握的思路归根到底都是Fuzzing的结晶。

在漏洞挖掘中打开你的思维,加油~