安全矩阵

 找回密码
 立即注册
搜索
查看: 674|回复: 0

记一次实战绕过计算型验证码

[复制链接]

2

主题

2

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2024-6-5 17:47:03 | 显示全部楼层 |阅读模式
阅读须知
本文的知识内容,仅供网络安全从业人员学习参考,用于已获得合法授权的网站测试,请勿用于其它用途。请勿使用本文中的工具、技术及资料,对任何未经授权的网站、系统进行测试,否则,所造成的直接或间接后果,均由您自行承担。
场景介绍
本文场景为某违法网站的后台页面(已授权),通过 HTTP模糊测试工具和第三方 API 调用演示如何绕过加法的验证码识别,方便进行后台的弱口令爆破。
流程、
首先访问该网站,进入登录界面发现是一个仿造的登录后台,该页面由用户名,密码和一个加法型的验证码组成。
工具下载:TangGo测试平台
数据分析
抓取数据
打开 HTTP抓包测试工具,打开右上角内置浏览器,在浏览器中访问网站,加载后是一个登录界面:


回到 HTTP抓包测试工具中,点击左上角打开拦截开关,点击浏览器中的验证码图片刷新验证码,查看是否能抓取到验证码的请求包,发现 HTTP抓包测试工具会抓取到对应的请求包数据:


该数据是一个请求验证码的请求数据包,为了方便后续使用和数据的保存,把数据包发送到“重放模块”,且暂时把该数据包称之为“验证码请求数据包”。

发送到数据重放模块中,发送到 HTTP 重放模块后,点击发送按钮,可以看到右侧返回数据是一个图片,点击“页面浏览”可以看到具体的图片:


对于这些类型的验证码,社区版的模糊测试工具自带的识别引擎无法做到,但是我们可以调用第三方平台的API来实现。具体解决方法如下:

某些第三方平台提供了各类验证码识别的API接口,可以将验证码相关数据提交到第三方API接口进行识别。接下来我们用网上找到的某验证码识别平台的API进行演示,讲解如何通过自定义流程调用第三方API接口,使用第三方API接口帮忙识别验证码,得到计算型验证码的值。

API(Application Programming Interface,应用程序编程接口)接口是一种定义了软件应用程序之间如何进行通信和交互的协议和工具集合。API接口通常用于不同软件组件、服务或系统之间的集成和互操作,允许它们共享数据和功能,从而实现更大的应用或系统。

API 接口可以分为多种类型,详情请自行搜索学习,本文中使用的 API 接口为Web API。

Web API:基于Web技术(如HTTP/HTTPS)的API,通过HTTP请求和响应进行通信,常用于Web应用程序之间或客户端与服务器之间的交互。


请在 username 后填入你注册的账号请在 password 中填入你账号的密码

请在 typeid 中填入数字选择对应的模式

请在 image 中填入 base64 编码后的图片

识别准确率:

关闭 HTTP抓包测试工具中的拦截开关,放行掉之前抓取的验证码请求数据包。接下来抓取登录数据包,重新打开拦截开关,回到浏览器中,填写任意用户名(admin)、密码和验证码后点击登录:

发现HTTP抓包测试工具中成功抓取到对应的登录数据,接下来使用模糊测试工具进行弱口令爆破

参数设置
把抓取到的数据发送到 HTTP模糊测试工具中,等待 HTTP模糊测试工具自动打开并且自动跳转到工具中:
步骤 1- 设置请求参数
对需要测试的数据进行标记,这里标记的是账号“admin”和密码“123456”:



步骤 2-设置变体参数
1.重放模式


此处选择多字典交叉爆破模式,对字典中的账号和密码进行交叉爆破。

2.变体赋值

分别对变体 1 和变体 2 导入需要的字典:


如果导入错误的数据可以点击最右侧“×”的来清楚数据然后重新导入。

自定义流程
为了计算数字型验证码的值,我们采用了自定义的流程。在发送请求之前,通过调用 API 接口计算出相应的值,整个过程分为 4 个步骤完成。接下来,我们将逐步介绍每个步骤的流程。

步骤 1:

点击自定义流程,在发包前流程中点击新建-->发送 HTTP 请求:


回到 HTTP 抓包测试工具中,打开重放模块,找到之前称之为“验证码请求数据包”的数据包,把该数据包内容复制到请求数据包块中。因为是 HTTPS 请求,所以请勾选 HTTPS 开关,否则会出现发送数据失败的情况,绑定结果变量名字为“YZM_Respons”,绑定完成之后该变量会变成全局变量,你可以在工具中的任何地方调用。

步骤 2:

因为官方的 API 接口明确需求,图片要转换成 base64的格式,所以再次点击右上角新建流程,选择“对数据进行处理”,操作的变量为步骤 1 中设置的变量“YZM_Respons”,对象的属性为“HTTP 响应 Body”,结果绑定变量名字为“PNG_base64”。


新建处理规则,点击右下角新建按钮:

在新建的弹窗中选择 BASE64 编码和 URL 编码。

再次新建选择 URL 编码:

base64 编码后再进行URL编码是为了防止base64编码后出现的+号字符被接口当作空格处理了。如果某些接口在 base64 编码后验证码识别仍然失败,很可能是因为该原因所致,所以我们对进行 base64编码后的数据再做一次URL编码,即可解决该问题。

对变量“PNG_base64”的BASE64 编码和 URL 编码设置完成。


步骤 3:

在发包前流程中点击新建-->发送 HTTP 请求:


在弹出的页面中,填入官方 API 指定的接口请求包,其中“image”中填写变量为步骤 2中处理的变量“PNG_base64”,结果绑定变量名字为“YZM”上。因为我们只需要返回数据中的图片计算后的值,所以这里使用正则表达式提取对应的值。

具体点正则表达式设置方法如下:根据 API 官方文档的返回结果可以看到,正确的结果为“result”中的内容,所以我们需要提取“result”中的内容:

使用 TangGo 自带的正则表达式,选择需要提取的数据,打开生成器之后粘贴需要提取内容,找到需要提取的值,选择完成之后右侧会生成大量的正则匹配式。您可以从中选择任意一条正则表达式,这里我们选择倒数第五个正则匹配式,然后点击右上角的测试按钮。测试完成后,在底部的文本框中可以查看匹配的数据。确认匹配数据与需要提取的数据一致后,复制该正则表达式:


选择从响应中根据匹配正则表达式的数据,填入复制的正则表达式,绑定结果变量名字为YZM。

至此自定义流程-->发包前流程设置全部结束:

回到“请求包及变体设置”,在“captch”变量后中插入步骤 3绑定的变量“YZM”:


设置好上述内容后则开始测试。

开始测试
点击“测试过程”中的“启动测试”后有许多数据,查看任意数据包:


点击右侧自定义流程中查看对应的数据,依次查看执行顺序 1、2、3。

点击图标查看对应的流程:

查看步执行 1-->提取验证码,提取验证码结果为 “29+8”。

查看执行 2-->对数据进行 base64+url 编码。


查看执行 3-->发送请求包+使用正则表达式提取数据,提取结果为“37”。为成功的验证码结果。

至此成功绕过了计算型验证码。

案例总结
本次文章中使用 TangGo 中的 HTTP模糊测试工具配合 API 接口成功绕过计算型验证码的请求。

流程图:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-27 20:32 , Processed in 0.014967 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表