设置了验证码并不是完全可靠,在很多情况存在验证码绕过的情况(举例是在登录处)
一、前端验证验证码,并没有后端验证。直接抓包然后进行跑数据包,反正有没有验证码的阻碍
二、验证码设置了但是并没有效验,乱输验证码也能够成功的登录
三、验证码可以重复使用,比如现在的验证码1111,然后虽然你登录失败后验证码会变,但是你输入1111他却判定你验证码正确(常见)https://www.uedbox.com/post/14207/
四、.验证码空值绕过,比如,我们现在抓一个包,发现登录参数是user=admin&password=admin&yzm=4123。 yzm验证码参数,但是我们如果去掉yzm的传参我们就可以绕过验证码机制,直接传参user=admin&password=admin,验证码就失效了https://www.uedbox.com/post/22266/
五、验证码干扰过低,轻松使用脚本识别https://www.uedbox.com/post/10085/
六:验证码会在HTML页面输出。https://www.uedbox.com/post/16869/
七、验证码可控制,比如他的验证码包含在URL里面,是一个URL传参,我们可以把URL设置定,那么验证码可控制https://www.uedbox.com/post/29913/
八、验证码有规则,比如是时间戳的后6位(rand函数进行随机数)
九、有万能验证码,验证码无论是什么,只要输入000000就能直接绕过
十、验证码有的时候会藏在cookie里面,分析一下是不是存在验证码的参数
十一、图片验证码,类型太少,容易识别https://www.uedbox.com/post/24112/
多次登录后才出现验证码绕过:
基于session:https://www.uedbox.com/post/22043/
基于ip: https://www.uedbox.com/post/28442/
基于用户:爆破用户名,而非爆破密码
有一类验证码,他并不是区分用户是计算机还是人的公共全自动程序,他是用来证明你的身份的,比如你登录微信,支付宝,支持短信验证码登录,像这类验证码他实际上是用来区分你的身份的。
当你QQ密码忘记密码的时候,你需要找回密码,然后他要求把APP显示的动态密码填入框里面,一般而言手机验证码时间都有5-30分钟,如果他没有做尝试限制的话我们是不是可以进行穷举?然后直接跑出验证码然后就修改他人密码呢?
第一种就是找回密码,往邮箱发送明文或密文的密码或者验证码(手机短信验证就是往你手机号码发验证码)通过这样的方法来判断是否是本人
第二种发送一个重置密码的链接到邮箱
上述的密码找回方法会有什么样的漏洞呢?
1.验证码发送后前端返回 (https://www.uedbox.com/post/13890/)
2.验证码无次数限制可爆破 (https://www.uedbox.com/post/15675/)
3.验证码可控 (https://www.uedbox.com/post/26992/)
4.直接修改密码页面(https://www.uedbox.com/post/35739/)
5.越权漏洞->自己验证码通过改包然后修改他们密码
https://www.uedbox.com/post/24098/
https://www.uedbox.com/post/42136/
在注册之前,通过预先设定一个密保问题,忘记密码时,通过此密保进行认证,认证成功进入密码修改页面。
密保问题可能容易直接被猜测 (比如很多学校的知道学号和身份证号码就可以重置校园通的密码)
密保问题答案页面中显示(数据包里面可能自带了密保答案,可能在JS里面)
四、靶场提示代码审计\Include\web_email.php这个文件源码中可以看出验证码是10到10000之间的数字