吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5443|回复: 49
收起左侧

[Web逆向] 雷池WAF滑块版本逆向分析

  [复制链接]
LiSAimer 发表于 2024-12-31 14:16

前言

项目中的网站防护突然更新了。
原先是无感检测,现在加了个滑块。
上一版的算法看的这位佬的文章写出来的。https://www.52pojie.cn/thread-1930242-1-1.html
网上先找了一圈没有相关的分析文章,只能自己顶了。

目标网站

aHR0cHM6Ly93d3cuY2hhbmdhbmp5enguY29tLw==

DevTool控制台检测

滑动滑块后被检测到
1.png

看下控制台发包数据,只有一个js文件challenge.js,看来就是它了。
先过一眼代码,不多,五千多行,没有混淆。

既然是滑块滑动完后触发检测,那我们先加个mouseup的鼠标监听断点。
滑动鼠标到位置后松开,看下断点位置。定位到了函数j的位置,向下继续走,能看到先拿到了轨迹去判断,too-fast检测滑动太快,too-slow滑动太慢。中间一系列计算检测是否正确滑动到尾端位置。 直接到最后的w函数。
2.png

看下入参
e:固定域名
t:6205cd33ef8541dfaf16eabb6329dcda_61    访问首页时响应内容里的,每次值都不一样,先标记为client id后续会用到。
s:轨迹

进入w函数往下走两步,触发了当前环境正在被检测,ok找到了。
3.png

看看v函数,有个43位数组,遍历执行每个数组的fun函数,再进fun代码看看。
4.png

好家伙,原来是43个检测点。
5.png

那就懂了,初始分数为0,每检测到一个点,增加相应分数,分数大于等于100则触发被检测到。
这里不管那么多,直接从源头注释掉完事了。
6.png

流程梳理

检测相关代码去掉后。重新刷新网页滑动滑块,正确进入网站。
再分析发包数据,可知整体流程如下。
1、请求首页获取client id和cookie sl-session
2、请求获取challenge.js文件先进行环境检测
3、携带client_id请求issue接口获取一个数组和issue_id
4、请求获取calc.js文件,在里面操作wasm
4、将请求issue获取的数组在wasm中进行相关计算获得一个新的数组
5、携带新的数组和一些固定参数请求verify接口获取jwt也就是最终的cookie sl-challenge-jwt
拿到cookie sl-session和sl-challenge-jwt就能获取到网页信息。

wasm AI分析

开始看到有wasm文件我也很蛋疼,虽说也不是没解决过,但就很无力。
不过还好,看了下也就不到四百行,那就不用手写WebAssembly了,可以用 AI 刚一下。

回到上回断点处继续往下走,看到fetch要获取calc.js文件,直接跳到then。
new Blob它创建一个Blob对象,i 是calc.js的代码内容,
URL.createObjectURL 为 Blob 创建一个唯一的 URL,这个 URL 可以被用来引用 Blob 中的内容,
new Worker 创建一个新的 Web Worker,使用上面创建的 URL 作为 Worker 的脚本来源。
7.png

这样你会看到多了这么一个文件,里面其实就是calc.js的内容。
8.png

进入文件搜索 WebAssembly 定位到调用wasm的位置。可以看到它整体被赋值给了 onmessage(玩过5s盾的应该都被这个虐过),
那直接搜索 postMessage 可定位到它的发送位置。
9.png

断点继续往下走,就会进入wasm了。
10.png

先分析流程
reset > arg > calc > ret
这是调用wasm中方法的顺序。

下面交给AI
我是先分段丢给它,每个方法都让AI分析出具体的解释。
11.png

每一段都分析完后再让它结合起来复现算法。
这一块费时较多,我先用的chatGPT 4o模型,每次调教后给的代码执行的结果都是乱七八糟的格式完全对不上。
于是我换了Claude3.5 Sonnet模型,这回给的代码执行结果的格式对上了,但是结果是不准确的,和浏览器调试不一致,
12.png

那剩下的就是对比下wasm的执行流,抠抠细节,多调教会正确代码就出来了。
13.png

最终请求verify接口是带上新生成的result数组,其他参数写死即可,没错轨迹也可以写死没有校验。
14.png
15.png

总结

总的来说不是那么难,在调试的时候需要有目的的去定位关键位置,代码里有很多setTimeout和Promise,单步调试会很困难。
有了AI帮助后,分析代码也轻松了很多。
这是在2024年的最后一天编写的文章,也祝大家新年快乐。

免费评分

参与人数 20吾爱币 +17 热心值 +20 收起 理由
guo9tsword + 1 + 1 我很赞同!
zoohehe + 1 谢谢@Thanks!
gzpenbeat + 1 + 1 我很赞同!
MengLYL + 1 热心回复!
soughing + 1 + 1 我很赞同!
笙若 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
chuyin + 1 我很赞同!
慕鸢灬 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
duzhaoming + 1 + 1 我很赞同!
fengbolee + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
allspark + 1 + 1 用心讨论,共获提升!
soyiC + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
youngfun39 + 1 + 1 热心回复!
Tonyha7 + 2 + 1 用心讨论,共获提升!
Bizhi-1024 + 1 谢谢@Thanks!
ioyr5995 + 1 + 1 我很赞同!
FitContent + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Wangweikang99 + 1 + 1 谢谢@Thanks!
liuxuming3303 + 1 + 1 谢谢@Thanks!
cyzhaojia + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lu_wakin 发表于 2025-1-5 22:06
ai的确是不错,有些代码要不同语言实现,直接发给ai就能给出另外一种语言的实现方式。虽然问题不少,需要单步调试对比值,但也比自己重写快太多了。
soughing 发表于 2025-1-21 10:41
ai的确是不错,有些代码要不同语言实现,直接发给ai就能给出另外一种语言的实现方式。虽然问题不少,需要单步调试对比值,但也比自己重写快太多了。
g10020200 发表于 2024-12-31 22:18
g10020200 发表于 2024-12-31 22:19
666感谢分享
g10020200 发表于 2024-12-31 22:22
666盖着飞翔
SmileLoveSex 发表于 2025-1-1 06:10
感谢分享,谢谢。
tco2k 发表于 2025-1-1 09:35
感谢发布原创作品,吾爱破解论坛因你更精彩!
qiuqiuqiu123 发表于 2025-1-1 20:18
tql,感觉大佬用ai分析就是手到擒来
rxxcy 发表于 2025-1-1 23:27
感谢打开了我的思路
risito 发表于 2025-1-2 10:28
又学习到了,ai真是帮助学习的利器
anning666 发表于 2025-1-2 13:58
没有现成的轮子,就自己造一个,大佬牛B~~~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-4-10 22:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表