一:验证码可能存在的问题
客户端:
1、验证码由本地js生成仅仅在本地用js验证。
2、验证码输出到客户端html中,送到客户端Cookie或response headers。
3、有些网站默认不显示验证码,而是在输入错误一定数量之后才需要验证验证码,开发人员可能在Cookie中写入一个标记loginErr,用来记录错误数量,则可以不更新Cookie中的loginErr值反复提交,验证码就不会出现。
服务端:
1、验证码不过期,没有及时销毁会话导致同一验证码反复可用。攻击者可以在Cookie中带固定的sessionID和固定的验证码字符串。
2、没有对验证码进行非空判断,可以抓包直接删除验证码
二:绕过过程
1、首先查看是否是js生成、验证。
禁用js或者抓包看是否能抓到验证码
2、审查元素,看是否能够直接打开验证码图片地址
3、查看源代码,是否直接存在于源码中
4、抓包。查看cookie,将验证码和cookic对比,查看信息。(有些开发者为了节省服务器资源,会将验证码放在cookie中)
5、验证码爆破。