验证码绕过

http://www.javashuo.com/article/p-wlbswrir-ep.html
https://www.freebuf.com/column/156519.htmlhtml

1.验证码不刷新

致使验证码不刷新的缘由是:登陆密码错误以后,session中的值没有更新,验证码不变。验证码不刷新一般有如下两种状况:无条件不刷新、有条件不刷新。前端

1.1无条件不刷新
无条件不刷新是指在某一时间段内,不管登陆失败多少次,只要不刷新页面,就能够无限次的使用同一个验证码来对一个或多个用户账号进行暴力猜解。python

1.2有条件不刷新
有条件不刷新多见于以下状况:登陆失败以后,系统会打开一个新页面或者弹出一个新的警告窗口,提示用户登陆失败,点击肯定后返回登陆界面且验证码刷新。这种状况下,只要咱们不关闭新窗口或弹窗,配合使用Burpsuite的intruder模块就能够进行暴力破解了。程序员

2.验证码前端可获取

这种状况在早期的一些网站中比较常见,主要是由于程序员在写代码的时候安全意识不足致使的。验证码一般会被他们隐藏在网站的源码中或者高级一点的隐藏在请求的Cookie中,但这两种状况均可以被攻击者轻松绕过。web

2.1验证码隐藏在源码中
验证这种状况很简单,咱们只须要记住验证码,而后右键打开网站源代码,Ctrl+F搜索,输入刚才的验证码,若是能够成功匹配到,那恭喜你,接下来就能够写工具,提取源码中的验证码并将其放入每次请求的报文中,来进行账号破解,这里推荐使用python。安全

2.2验证码隐藏在Cookie中
这种状况,咱们能够在提交登陆的时候抓包,而后分析一下包中的Cookie字段,看看其中有没有相匹配的验证码,或者是通过了一些简单加密后的验证码。微信

3. 验证码空值绕过

验证码空值绕过,是在平常的渗透测试中很容易被咱们忽略的一点,实际应用中咱们能够经过直接删除验证码参数或者Cookie中的一些值来绕过判断,进行暴力破解。session

4. 验证码易识别

在日常的漏洞挖掘过程当中,若是咱们发现登陆的验证码很是简单且易于识别,那咱们就能够尝试使用自动化工具来进行登陆破解了,如PKAV的HTTP Fuzzer。svg

5. 存在无验证码页面

通过测试,若是咱们发现网站验证码自身并不存在缺陷,那咱们接下来就能够尝试寻找一些其余的登陆页面或接口来尝试暴力破解。工具

5.1隐藏的页面
这种页面一般是留给测试人员使用的,或者是一些忘记删除的老界面,利用的前提是该界面依旧可用,通常状况下,咱们能够经过扫描器来发现这种页面。

5.2 微信公众号、APP登陆页面
不少网站的web登陆页面已经作的至关完善了,可是却在微信公众后的绑定接口或者是APP的登陆界面上面栽了跟头,在渗透测试的过程当中,必定不要忘了对公众号和APP的测试。

6. 其余绕过方法

6.1万能验证码
渗透测试的过程当中,有时候会出现这种状况,系统存在一个万能验证码,如000000,只要输入万能验证码,就能够无视验证码进行暴力破解。

6.2验证码无效
这种状况下,不管咱们输入什么数据,验证码都会判断经过,验证码形同虚设,这种状况我只遇到过一次。

6.3验证码数量有限 多见于计算类型的验证码,如1+8=?,这种类型的验证码严格意义上来讲不能叫作验证码,多刷新几回验证码,咱们可能会发现系统中的算数题目只有那么几道,这种状况下只要将验证码所有下载下来,生成一个md5库,而后将前端生成的验证码与本地文件进行对比便可。