JS逆向 --- 易盾有感滑块
Posted .源.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS逆向 --- 易盾有感滑块相关的知识,希望对你有一定的参考价值。
声明:本文仅限交流学习使用,请勿使用在任何非法商业活动,禁止用于非法用途。否则后果自负。如有侵权,请告知删除,谢谢
滑动拼图验证码_拼图验证_图形验证_在线体验_网易易盾网易易盾创新行为式验证,轻松一滑完成拼图,用户体验极佳,秒速通过验证。https://dun.163.com/trial/jigsaw
一、验证码接口
以下滑块以官网的为例
获取验证码主要加密参数:fp、 cb
二、分析 fp
1. 进入函数下断点
2.在执行到这里的时候参数已经形成了, 单步跟栈
3.跟到这里可以发现参数是 “fingerpring”, 全局查找参数
4. 'fingerprint'是由参数_0x443773赋值,_0x443773从 window 中取值,控制台打印一下 _0x1fb903(0x7ef), 大致就是从window取 gdxidpyhxde,拿 fiddler 去 hook 下结果
5. 打开fiddler使用编程猫的插件,编写 hook 代码, 勾上选项,清除 cookie刷新浏览器
6. hook到内容的时候是没有值的,说明还没有生成,第一次赋值为 null, 一步一步跟栈
7. 函数 _0x18a835 就是生成 gdxidpyhxde 的地方了,单步走,跳过流程我们直接看结果
8. 加密的参数基本都可以定死, 把 _0x18a835 函数扣下了, 哪里报错补哪里,补不上赋值为空
到这 fp 参数就逆完了, 测试结果
三、分析 cb
1.还记得之前分析fp第三步的时候有出现的cb参数吗?回到这里接着分析
这是一个随机数,应该由时间戳或者随机生成的数据, 进入 _0x4339f3 重新下断点
2. 发现一只小可爱 "uuid" ,uuid的生成一般都是32位的随机数,扣下来就完了
3.cb 参数测试结果:扣代码的时候有 try 异常捕获,最好是(不重要的情况下)把捕获代码去除
验证码获取测试
fp、cb教程到此结束
本篇文章结束
。。。。。。
。。。
。
好了开玩笑的休息一下放松放松眼睛,开始下一轮分析: 滑块轨迹分析
四、滑块轨迹分析
1. 观察成功划过滑块返回的参数:验证正确返回不为空的 validate 值
2.观察所需要的参数: 除去cb参数剩余的参数都是经过加密的,在验证之前发了个 b 包
3. 先查看 b 包: 表单提交有一串长长未知数据,不管它先凉着,打个卡
五、acToken分析
1. 进入函数内部,为什么进这里呢?两点:一、有混淆进混淆,二、一个个点进去观察观察
2. 断这里呢加密结果已经出来了,跟进一下
3. 结论得出: acToKen 由变量 ”_0x6f9f72“ 取出 ”_arg“, “_0x6f9f72” 又是 this,由于全局查找 ”_arg“ 没有结果, 但变量中有 "_fullfilledCallback" ,遗憾的是也是查找不到的,那怎么办?
世上无难事,只要肯放弃!
那就洗洗睡吧!本文章大结局 ....
我觉得还能抢救一下下。。。
但是还有一个重点 --- 就是它是混淆!没毛病所以你懂了吗? 全局查找 “0x6e7” , 瓦特?
控制台输出一下 0x6e7,1767 这是什么?下标?现在明白了吗?
还不明白?来再看看?从第一张图我们知道 通过 _0x3d3aca( 0x6e7) 取得参数,而刚刚已经将了 0x6e7 = 1767, 说明什么? 从此得出 _0x3d3aca 取出的参数结果是固定的, 那_0x3d3aca是什么?是不是等于一个变量?里面存储着大量的数据?还不懂? 控制台再来看看。Got it ?
4.好了,回头看看通过全局查找来到这里下重新下断点, 像不像 python 类初始化参数?
现在 ”_arg“ 已经出来了,同上再全局查找 “0x83e”
5. 来到 ”_arg“ 赋值的地方 这时 acToKen 已经出来了,继续跟进
6. 在跟到 h 的时候加密参数已经出现了,加密了一串字符串不知道什么玩意,但是又有点眼熟?
7. 嚯嚯嚯是他是他就是他!她来了她来了!图中不难看出吧? Oa 加密了 a 字典?
a 的参数是什么?总感觉在哪见过?
8. 还记得之前打卡的 b 包吗?我们来看看,经过多次调式,有一个值是固定不变的?
全局查找没有?接口查找有了!?OK,果不其然有个 d 包 返回的值。
acToken分析总结: acToken 由 d 包返回 值加密一串神秘的字符串;打个卡 Oa,先分析到这里
六、分析未知的 d、b 包
d)
1. 已知 b 包通过 d 包获取到参数,先分析 d包,清除 cookie 进 d 包点
2.目标出现~ 跟进 d 包点
3.观察四周,发现目标;小心上当受骗;c 数组级联 e、f 数组,断点 $a()
4. 进入 $a() 函数,初始化 m 字典 遍历字典,生成数组 F;
重点函数直接拿下;缺啥补啥会员肾宝片你值得拥有!
5. 回到外部 进入 DC 函数,遍历字典 Ya 生成 数组 e
6.小技巧补充重点敲黑板: 关于字典的快速取值保存当前 JS 到本地
打开fiddler,勾选浏览器与fiddler服务 ,刷新浏览器,你编写的js就会被替换成本地的JS了,为所欲为,接
定义全局变量,放入里面,成功拿到 Ya 字典值
d 包分析到此结束 测试结果 ↓
b)
1. b 包跟 d 包的请求方式加密方式基本一致 ,需要注意参数
2. b包的参数基本可以固定, d.concat 的 d 要生成其他两个可以固定
d、b包到这里就结束了
这个随机字符作用很大哦~
后续轨迹需要使用 随机且唯一 测试 ↓
接下来就是轨迹加密的重头戏了!决战时刻!!!
七、回到 acToKen 继续分析
1.还记得之前打卡的 Oa 函数吗?回头继续分析,通过 d、b包的分析,我们可以已知两个参数了
acToKen 就这? 扣它就完事了,要是不行多喝点六味地黄丸、肾宝啥的补补
其实这个随机字符也可以固定写死,测试结果 ↓
八、data 轨迹加密生成
1. 顾名思义、、、进去打卡
2. 这这这。。。轨迹的数组也加密了?没事咱先把加密函数 _0x277e54 拿下
3.之前写fp的时候函数啥的基本都补齐了,这里还是很快的, 看看测试结果
4. 轨迹的生成,全局查找 “0x481” 为什么查它? 之前已经解释了,这里不再复述
5.这个地方很是可疑断点看看
6. 这不就出来了吗?轨迹加密之前扣data加密是有拿下的,直接使用
以上是关于JS逆向 --- 易盾有感滑块的主要内容,如果未能解决你的问题,请参考以下文章