实验对象: https://v.6.cn/
模式: 滑动验证码
0x01 数据包流程分析
Step 1 初始化
请求初始化
https://captcha.fengkongcloud.com/ca/v1/register?organization=TKWQ4vmgC3PJLGDTMIoJ&appId=default&channel=DEFAULT&lang=zh-cn&model=slide&rversion=1.0.1&data=%7B%7D&callback=sm_1546058325312
需要注意的几个参数
- organization : 每个网站独有
- model : 验证码模式三选一
select | slide | auto_slide
- version : 版本号
初始化响应
{ "code": 1100, "detail": { "bg": "/cr/v1.0.1/set-000008-1.0.1-r1/a10669c7d5484169d48acf659b228794_bg.jpg", "bg_height": 300, "bg_width": 600, "domains": [ "castatic.fengkongcloud.com" ], "fg": "/cr/<v1 class="0 1"></v1>/set-000008-1.0.1-r1/a10669c7d5484169d48acf659b228794_fg.png", "k": "wxRt9dnGF04=", "l": 8, "rid": "20181229123843dcd75537a6502e1159" }, "message": "success", "requestId": "215f0e3369ea61788be5d4ffb2d4a045", "riskLevel": "PASS", "score": 0 }
需要注意的几个参数
k
、l
、rid
Step 2 验证码验证
https://captcha.fengkongcloud.com/ca/v1/fverify?organization=TKWQ4vmgC3PJLGDTMIoJ&appId=default&channel=DEFAULT&lang=zh-cn&rid=20181229123843dcd75537a6502e1159&act=%2FGA8NmZgtaL7A4F4Ptfs7aEBFKbSG3DNpyxkYUKVTHpPgOjRiERrE4jK5B9CVR%2B02f92GZ8CbzpwHwPUjFkiTyLTmEH%2BwEUWwC7DfC%2B5fUDX2%2BH7mJIJsRngF87BHBcntfHtkOd182apukKBGkMLURngF87BHBcn19VCJalqDCm0AlbDj8ulu1OgCLT5wU6Hz5dRiq1O1vPFtq7BKohFQ8plPGFiDLmEzXDKfTbVOIs%3D&callback=sm_1546060999834
请求参数organization
、rid
都在上面提到,在这里最重要就是加密参数act
,破解了act
就万事大吉
0x02 加密参数分析
Step 1 如何跟入函数
- 在 F12 中跟入最底层触发函数下个断点,重新调用后翻下
调用堆栈
,查找关键字act
即可
Step 2 外部主体函数简单分析
P.S. 因为混淆采用二层函数调度表实现函数调用,所以下面都是简要分析
关键的参数分析
- d : 滑块终止 X 坐标 / 图片高度
- m : 鼠标运动轨迹
- c : 持续时间(结束时间-开始时间)
参数值的获取
滑块终止 x 坐标的获取,可通过请求背景图片分析边缘
运动轨迹可按喜好生成,下面是一个简单的运动轨迹,每个单位分别对应是
[x, y, time]
[[0,0,0],[0,0,101],[0,0,203],[29,0,301],[95,3,400],[114,7,500],[116,8,601],[119,9,700],[121,10,803],[122,11,901],[124,11,1001],[125,11,1101],[125,12,1201]]
持续时间需要配合运动轨迹结束时间
Step 3 加密函数分析
因为密码学忘得差不多了,他所谓的DES
函数的分析就不放出来了,简单地说下流程
- 根据
sshummei
和base64Decode(k)
进行 DES 计算,取结果.substr(0,8)
为二次密钥 - 根据
1中生成的密钥
和打包的参数
进行 DES 计算,去完整的结果base64Encode
后即为act
0x03 EXP
内部分享,不对外公开