首页 > 试题广场 >

请尽可能列举你知道的网站未能正确使用图片验证码机制的情况,以

[问答题]

请尽可能列举你知道的网站未能正确使用图片验证码机制的情况,以及如何绕过其限制?

1、有的网站验证码由本地js生成仅仅在本地用js验证。可以在本地禁用js,用burp把验证字段删除。
2、有的网站把验证码输出到客户端html中,送到客户端Cookie或response headers。
3、有些网站默认不显示验证码,而是在输入错误一定数量之后才需要验证验证码,开发人员可能在Cookie中写入一个标记loginErr,用来记录错误数量,则可以不更新Cookie中的loginErr值反复提交,验证码就不会出现。
发表于 2020-05-27 11:34:52 回复(0)
1.验证码逻辑在前端代码中。通过分析逻辑计算出验证码。
2.验证码整齐且易识别。利用OCR自动识别验证码,利用卷积神经网络训练识别模型。
3. 验证码位数低,存在爆破可能。
4. 验证码存活时间过长,在识别一次后可持续利用。

发表于 2021-03-08 16:45:33 回复(0)
客户端:
1.验证码直接暴露在html
2.验证逻辑在客户端浏览器中
3.验证码的生成逻辑在前端,可逆向逻辑
4.验证码生成逻辑在后端,但是与前端某些值绑定,大量收集数据后可能分析出生成逻辑
5.图片很简单,ocr识别
6.存在爆破的可能,例如2位数字的验证码
7.指纹识别出后端语言,猜解出其验证码生存库;可本地搭建生成,ocr自己训练出识别模型

服务端:
1.验证码的存活期很长
2.验证码不验证错误后,不立即销毁
3.验证码生存受到前端参数的影响
4.验证码验证频率太高可导致本地资源耗尽,例如生存图片尺寸受到前端参数影响
5.直接验证用户名和密码,优先于验证码验证
6.跨用户,验证码复用

发表于 2020-08-20 01:29:46 回复(0)
验证码内容可以OCR识别:通过开源的OCR引擎可以自动输入验证码,绕过验证机制
验证码未及时失效:验证码在服务器端校验后,没有立刻失效,需要客户端再次请求才会更新。这样攻击者可以在验证码验证通过之后,不再请求新的验证码,使用原来的验证码进行操作
验证逻辑顺序错误:先验证账号密码,在验证验证码。这样可以直接绕过
验证码由前端生成:验证码的值由前端生成然后发送到后端形成图片,这样攻击者可以分析前端代码找到验证码的生成逻辑,从而伪造验证码,绕过验证机制
验证码在返回包中返回前端:通过抓包攻击抓取包含验证码内容的数据包,然后把验证码内容提取出来用于自动填写验证码,绕过验证机制
存在万能验证码:在测试环境中为方便设置的万能验证码,上线后未关闭
验证码与数据包参数绑定存在漏洞:有些验证码与数据包中的某个参数绑定,如cookie中的某个属性,只要他们匹配,验证码就认为是有效的,攻击者可以通过分析数据包,找到与验证码绑定的 参数,然后通过伪造该参数,使验证码通过,从而绕过限制。
验证码大小值由前端控制:攻击者可以修改前端代码,生成超大的图形验证码,导致服务器内存耗尽,从而实现拒绝服务攻击。
发表于 2025-09-22 13:04:02 回复(0)
1.多数网站使用验证码的数量有限,包括验证码的组合方式,滑动的像素数都是不变的,如果不定时进行更新会导致攻击人员通多多次尝试来进行暴力破解。
2.某企业官网后台登录方式是单纯数字或者是一位英文+三位数字的方式的图片验证码,这会导致暴力破解变得容易。
3.在研发人员进行图片展示时会在后台附上图片编号,甚至是图片的路径,这可能直接导致可执行代码的漏洞,通过sql注入的方式来拿到数据库的权限。
发表于 2021-12-08 13:54:19 回复(0)
客户端 

1.验证码在前端使用JavaScript生成和认证,不经过服务端 
2.验证码可以直接在返回包、html源码或者JavaScript源码中可以直接查看
 3.验证码过于简单,可以直接使用类似验证码识别工具去进行爆破和绕过

 服务端

 1.服务端没有对验证码参数进行非空判断(删除验证码参数值或者全部删除) 
2.开发人员为了方便测试和开发,忘记删除简单的验证码(比如:1234、6666、8888)
 3.输入验证码点击登录抓包之后,如果页面不刷新或者说验证码不刷新,该验证码可以一直使用
编辑于 2020-08-17 09:22:35 回复(0)
客户端
1.在本地作验证码验证,可以通过burpsuite进行截取,修改后发出。
2.错误次数超过后才会显示验证码,可以选择不更新cookie中的logerror等字段避免出现
3.有的网站把验证码输出到客户端html中,送到客户端Cookie或response headers。

服务端
1.验证码不过期,没有及时销毁会话导致同一验证码反复可用。
2.没有对验证码进行非空判断

绕过:
1.关闭js,看看验证码是否还生成
2.审查元素,看看能不能直接打开验证码网址
3.查看源代码,是不是存在验证码
4.抓包,查看cookie,看看是不是直接存在
5.验证码爆破
发表于 2020-06-27 17:41:33 回复(0)