首页
社区
课程
招聘
【JS逆向】某验三代点选逆向分析
发表于: 2025-3-24 20:12 7421

【JS逆向】某验三代点选逆向分析

2025-3-24 20:12
7421

本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关.本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责

站点:aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tLw==

目标:某某验点选

配套视频:视频

提前打开F12,进入网站点击登录,手动点错一次提交后,观察发包:

在这里插入图片描述

这5次请求为核心请求,依次分析。

在这里插入图片描述

发现其主要参数为gt,且能搜索到是来自于capthca这个接口,再看看这个接口有什么:

在这里插入图片描述

观察主要返回这些内容,在接下来的流程中可能会用到。

响应内容:返回了很多字段,可能后续有用

在这里插入图片描述

请求参数:gt,challenge上一步我们已经拿到。w看起来似乎要处理。

在这里插入图片描述

这里就不贴图了,跟第2步的请求参数一样,可能要处理w。至于响应内容,则返回的是当前验证码类型:

响应内容:pic返回了图片,以及一些字段后续可能用到

在这里插入图片描述

请求参数:没有需要特别处理的,此前全都能取到。

在这里插入图片描述

响应内容:返回fail,正是点击失败的返回,这一步就是去验证验证码了

请求参数:除了w,其他参数并无特别

在这里插入图片描述

以上5次请求,发现235三个步骤中都有w需要处理,目标则为逆向w值。先说结论,实测下来其实23步骤中的w并不校验,本次不分析,着重于分析最后一步提交验证码的w参数分析。

先大概看看调用栈,发现都来自于click.3.1.1.js这个文件,那目标明确。

在这里插入图片描述

发现有大量这种调用,显然是个混淆。

在这里插入图片描述

我的习惯是面对这种混淆,优先看看AST还原一部分,便于调试。

将js拿出来放到vscode收起来观察,4个大方法,一个自执行方法,并不是传统的OB混淆

在这里插入图片描述

尝试拿自执行方法中的某个调用,来本地执行打印,发现没问题能正常出值。整个自执行的方法中包含大量$_CFAn(86)这种类型调用,结合我们本地能执行的情况,也就是说其实跟OB中的解密函数也差不多一个意思,那就好办了。

AST思路,详细过程在:视频

将还原后的js本地替换浏览器js后,直接搜索参数之一client_type可以直接定位到目标,接下来开始繁杂的debug

在这里插入图片描述

可以看到w = p + uu = n["$_CDGJ"]()p = w["$_EEn"](h),而h = X["encrypt"](ae["stringify"](o), n["$_CDHy"]())

那就先看u吧。跟进 n["$_CDGJ"]()看看。

在这里插入图片描述

混淆部分在视频中有讲理解,就是赋值新变量+concat+取值,由于我们已经AST处理掉了,这一部分就属于无用代码,后续分析其他方法看到这种直接不用管就是。

得益于解混淆后,直接就能跟到:

e是undefined,不用管;

需要再看new H()["encrypt"]this["$_CDHy"](e)。分别往下看

在这里插入图片描述

跟进来发现主要逻辑有来自于ve = Q(),继续往下跟:

在这里插入图片描述

在这里插入图片描述

​ 结论:

在这里插入图片描述

发现这个方法是加在k的原型上的,向上找就能找到var H = function(){}

在这里插入图片描述

把整个H拿下来,再把4个方法加上,稍微补一补环境,就能搞定。

在这里插入图片描述

在这里插入图片描述

跟网站生成的值一对比,发现不一样,其实也正常,这个算法是rsa,非对称加密,也可以用标准库去解决试试,反正这里我已经扣下来js了就这样不管了。

到这里,u已经搞定。

重头戏来了,这里p的组成比较复杂,需要逆向的值有好几个。

在这里插入图片描述

X["encrypt"](ae["stringify"](o), n["$_CDHy"]())

p来自于h,那先解决h。观察n["$_CDHy"]()的值跟上一步一样,其实也就是一个加密key值,流程如下:

所以h的重点在于X["encrypt"](ae["stringify"](o)以及o是什么,那就一个个来,先看o

o的组成很复杂,有这么多东西

a:其实是点击的坐标,但经过处理

ep:看起来像轨迹和环境

h9s9:可能要逆向

lang、pic:固定或者之前能取到

rp、tt:不知道含义,要逆向

在这里插入图片描述

其实就是JSON.stringify,直接改写就好


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2025-3-26 20:51 被ShriyGo编辑 ,原因:
收藏
免费 37
支持
分享
最新回复 (17)
雪    币: 227
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
学习了
2025-3-27 09:22
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2025-3-27 10:32
0
雪    币: 2419
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
谢谢分享
2025-3-27 16:08
0
雪    币: 209
活跃值: (89)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
曾经研究过 最终难的不是js逆向及算法分析 难的是轨迹处理 从鼠标进入浏览器区域后的真实轨迹到轨迹二次跳跃处理到参与加密 他们的后端应该是具备一定学习能力的 即使生成的轨迹可以过验证 一段时间后就会失效 需要不停的改变算法去模拟轨迹 最终懒得去折腾了 
2025-3-28 16:15
0
雪    币: 405
活跃值: (320)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
aopo 曾经研究过 最终难的不是js逆向及算法分析 难的是轨迹处理 从鼠标进入浏览器区域后的真实轨迹到轨迹二次跳跃处理到参与加密 他们的后端应该是具备一定学习能力的 即使生成的轨迹可以过验证 一段时间后就会失 ...
是的应用起来要处理的风控还多着呢
2025-3-28 16:32
0
雪    币: 144
活跃值: (708)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感谢分享
2025-3-28 16:36
0
雪    币: 1867
活跃值: (1426)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
666
2025-3-30 21:45
0
雪    币: 172
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
666
2025-4-1 09:50
0
雪    币: 286
活跃值: (280)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
666
2025-4-1 20:39
0
雪    币: 97
活跃值: (913)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习了
2025-4-2 16:06
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
666
2025-4-9 07:08
1
雪    币: 7
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
感谢分析
2025-4-22 10:45
0
雪    币: 206
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
15
感谢分析
2025-5-15 14:03
0
雪    币: 20
活跃值: (1349)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
看看啊宝贝的
2025-5-16 06:14
0
雪    币: 215
活跃值: (550)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
感谢大佬分享
2025-5-26 11:18
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
感谢分享
2025-6-9 16:43
0
游客
登录 | 注册 方可回帖
返回