温馨提示:本文旨在学习交流,严禁用于任何非法用途。如有内容不当之处,请联系作者删除。
序言
目标网站:aHR0cHM6Ly93d3cueXVucGlhbi5jb20vcHJvZHVjdC9jYXB0Y2hh

关键要点:AES, RSA,图片识别
查找接口
总共两个接口一个获取图片,另外一个进行验证

分析接口
获取图片接口:/captcha/get
参数:

响应:

验证接口:captcha/verify
参数:

响应:

其中cb为随机字符串:Math.random().toString(32).replace(“0.”, “”)
i:为AES加密,k为RSA加密,captchaId为固定值(根据网站变化而变化),验证接口的token为获取图片接口(/captcha/get)获得
关键位置定位
加密文件js是没有混淆等操作,可以直接关键词搜索。两个接口都走了这个位置

fp位置:使用murmurX64Hash128加密,加密明文基本上是常见的指纹信息等

yp_riddler_id位置:就直接的uuid就可以,注意点是验证接口需保持一致

aes加密和rsa加密:直接跟栈就可以定位到具体的key,iv以及public_key

轨迹以及distanceX位置:这里的this.alertImgTag.width为图片接口的sliderWidth按照比例进行缩放,this.offsetX为移动距离

图片识别
图片识别随便使用ocr或者open-cv都可以,但是这里的移动距离需要进行计算,识别到的缺口距离之后,需要按照比例缩放,以及计算
计算方法:

这里的this.offsetX为图片缺口距离,然后反向计算得到滑动距离。
至于轨迹,没有做很强的校验,只是有位置上的加成
结果

总结
总的来说,这个验证码不难,基本上跟栈就能出结果,而且都是标准的AES和RSA加密,但是想要成功率高就的注意找到那个滑动距离的计算方法。最近呢也是在学习验证码这块的内容,有兴趣的小伙伴可以一起交流,互相学习进步
646

被折叠的 条评论
为什么被折叠?



