介绍

  • 当验证码设计不存在逻辑层面的问题时,就要涉及到与验证码机制本身的正面对抗,也就是验证码识别技术这里的验证码主要是指图片验证码。
  • 验证码自动识别就是指通过自动化的技术对图片验证码中的字符或公式等内容进行还原,从而突破验证码的安全限制。

危害

  • 突破验证码的安全限制,使验证码功能失效

原理

  • 一般对于图片验证码的识别流程为:图像二值化处理→去干扰→字符分割→字符识别
  • 图像二值化就是将图像上像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果。
  • 为了防止验证码被自动识别,通常会加入一些点、线、色彩之类的方式进行图像干扰,如下所示
  • 所以为了达到良好的识别效果,需要对图像进行去干扰处理。
  • 宇符分割主要包括从验证码图像中分割出字符区域以及把字符区域划分成单个字符。
  • 宇符识别就是把处理后的图片还原回字符文本的过程。

测试

案例

通过验证码自动识别漏洞实现暴力破解登录密码。

测试方法

1、获取验证码链接

2、将链接载入验证码识别工具进行验证码识别,配置相关工具

3、如成功破解用户帐户,则证明验证码识别有效。

测试过程

第一步 抓取登录处,图片验证码的数据包

android 识别 图片验证码 框架 免费 验证码图像识别_验证码识别


第二步 密码字段和验证码添加变量

android 识别 图片验证码 框架 免费 验证码图像识别_验证码_02


第三步 设置图片验证码的地址和范围

android 识别 图片验证码 框架 免费 验证码图像识别_验证码识别_03


第三步 设置重返选项

android 识别 图片验证码 框架 免费 验证码图像识别_图片验证码_04


android 识别 图片验证码 框架 免费 验证码图像识别_图片验证码_05


android 识别 图片验证码 框架 免费 验证码图像识别_图片验证码_06


第四步 导入密码字典

android 识别 图片验证码 框架 免费 验证码图像识别_图片验证码_07


第五步 点击启动,进行测试

android 识别 图片验证码 框架 免费 验证码图像识别_验证码识别_08


第六步 查看数据包的返回值

android 识别 图片验证码 框架 免费 验证码图像识别_图片验证码_09

防御方案

1、增加背景元素的干扰。如背景色、背景字母等

2、字符的字体进行扭曲、粘连

3、使用公式、逻辑验证方法等作为验证码。如四则运算法、问答题等

4、图形验证码和使用者相关,比如选择联系人头像,选择购买过的物品等作为验证码。

5、对单位时间內提交请求失败的次数进行限制

摘抄


我想起自己在过去人生旅途中失却的许多东西——蹉跎的岁月,

死去或离去的人们,无可追回的懊悔。

–村上春树