看我如何绕过滑块验证码拿到高危漏洞 | 宜武汇-ag真人国际厅网站

1.1 简单验证

上来一个手机号验证码登录框,首先第一个想到的肯定就是短信炸弹漏洞了

看看有没有,先获取先验证码试试,好家伙出来个滑块验证码,安全,给你大拇哥~

没事丝毫不影响,一般这种情况下,我自己一般有个小技巧,就是直接打开两个页面,然后依次发送验证码,这样间隔肯定是在60s之内,如果第二次发送成功了就证明只有前端有限制,而后端并没有对验证码发送时间间隔进行限制,如下图是我的第二个页面,很显然这后端是没有限制间隔的

1.2 分析数据包

既然后端没有限制,我就得想办法绕过滑块验证码,但是要弄明白这个验证的逻辑,如下图所示,期间产生了这三个数据包

1.2.1 getpuzzle分析

接下来依次分析,首先第一个getpuzzle

请求体如下:

{"captchatype":"blockpuzzle"} 

主要看响应包,依然是json数据,其中有几个重要的分别是secretkey,originalimagebase64,jigsawimagebase64,token

其中originalimagebase64是原始图片的base编码,jigsawimagebase64是小滑块的图片

这个请求直接仿造就可以

1.2.2 checkpuzzle分析

看名字分析可能是一个滑块验证请求包,请求体如下,其中token和getpuzzle返回的token值相同,而pointjson是一个加密后的值

{ "captchatype":"blockpuzzle", "pointjson":"asdasdsasd/asdasdasd 2bul0=", "token":"xxxxxxxxxxxxxxxxxxxx" } 

接下来翻翻js文件,可以看到这个pointjson就是一个坐标{x:r,y:5}其中x坐标应该就是咱们拖动滑块的位置,而y坐标是5,紧接着对其进行加密,里面的s应该是个加密函数

1.2.3 sendmobilevalidcode分析

请求体如下

{ "mobile":"13xxxxxxxxx", "captchaverification":"ta 1ocxhfwrwfuiejoyq1g==" } 

这个请求就是发送验证码的请求了,但是还有一个加密值captchaverification不知道是什么,我改动后响应会显示验证码也过期,看来又是一个验证

同样翻翻js文件,它的值是传参过去的,而参数类型应该是列表,它的值是列表索引为1的数据,接下来找找这个e到底传了什么

继续跟进发下如下代码

这里可以看出captchaverification的值大致为i.backtoken ’—‘ 后边函数返回的值,i.backtoken就是第一个包返回的token,现在就剩后边函数的返回值,仔细看一下它是对e进行了解密,而这个e是什么呢?追溯到这

其中搜索这个yan_zheng_hua_kuai,定位到我们第二个请求包,

还记得第二个请求包有一个加密的值pointjson,应该就是它,接下来就是看这个加密秘钥了,继续查找,发现它就是第一个请求返回的secretkey,而且每次的验证码加密的密钥都是不一样的

1.3 批量伪造

整条线捋下来后,接下来就是批量爆破了,我这里用python写的,调用打码平台的滑块验证码识别接口(网站自寻),它会返回2个点,左上角和右下角,把左上角的x坐标提取,就是我们发送后两个请求中x坐标的值了

测试成功

1.4 心得

  1. 首先我这里就是特别老实的去翻js代码, 一点点扣逻辑,这样肯定没毛病,但是就是耗时费力,其实应该最开始的时候猜测一下secretkey就是加密的key,而加密的模式和填充模式在js代码中又很明了,直接拿key去解密第二个请求和第三个请求的值,明文就放在那里,我们也就不用通过js代码去看这个加密的原始值是怎么回事了。
  2. 如果遇到上边类似的事情,看看利用是否简单,入股复杂的话,最好先看一下验证码的每天发送,是否有数量限制,如果有数量限制拿也就不用费时间了

原文链接:https://xz.aliyun.com/t/12557

网络摘文,本文作者:15h,如若转载,请注明出处:https://www.15cov.cn/2023/08/27/看我如何绕过滑块验证码拿到高危漏洞/

发表评论

邮箱地址不会被公开。 必填项已用*标注

网站地图