声明
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
研究目标
- 地址: aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vZGVtby9zbGlkZS1mbG9hdC5odG1s
- 目标: 众多参数得生成流程
验证流程分析
首先请求这个连接拿到gt,challenge,然后
用拿到的gt和challenge请求这个连接拿到第一个cookie然后
在请求这个连接,拿到第二个cookie
带着这俩cookie去请求这个连接,拿到新的gt和challenge的值,然后这里的c和s在最后的验证中也有用到
最后发送请求验证,如果参数啥的没问题,返回success就算是验证成功了
参数生成流程分析
w值得生成过程
鼠标直接点进来断点下在这里
可以看到上面得\u0077值就是我们要研究的对象,然后把断点下在var u = 的那个地方 看看h和u是怎么生成的
进去看看u是怎么生成的
分析下e是怎么生成的
通过在控制台输出可以看出先生成了一个随机字符串然后把这个字符串传到了一个函数里进行了加密
先分析字符串的生成逻辑
t在这里是个undefined对象,追进去看看函数流程
最后返回的其实就是rt函数的值,直接把rt函数扣下来 缺啥补啥就行了。
然后看 U()函数
是一个自执行函数,全部扣走就行了这样h参数就研究完了。
然后就是l对象的分析,穿了两个参数一个o 一个就是刚刚的随机数通过观察可以发现这俩随机数是一样的 如果不一样最后可能会导致验证不通过
V函数也是一个自执行函数直接扣下来缺啥去网站上找啥就行了。
然后分析o参数是怎么来的
主要有这三个重要参数要分析
aa参数分析
这个值是传过来的去上一层堆栈找
把断点打在l这里继续分析
u就是滑块缺口的位置至于缺口识别的算法网上一搜一大堆
然后追到n[$_DAAAt(912)][$_CJJJp(1069)]这个函数中看看干了啥
这里是把滑动的轨迹传进去做了一次运算
最后这里把计算后的轨迹传进去然后做运算分别push到r i o 三个数组中 最后将这三个数组拼接成字符串返回 因为当前函数是W函数的prototype上的 所以把整个W函数以及它prototype上的东西都拿走
最后改一下调用方式 l的值就出来了
userresponse参数生成
把缺口位置 和 刚才请求回的challenge传到H函数里就行了
这样在控制台手动还原一下变量 逻辑就十分清楚了 到此w参数就算分析完成了