吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2258|回复: 60
收起左侧

[Web逆向] 【JS逆向】某滑块逆向分析

  [复制链接]
littlewhite11 发表于 2024-11-24 17:21
本帖最后由 littlewhite11 于 2024-11-24 17:27 编辑

逆向目标

  • 网址:aHR0cHM6Ly93d3cuY2hhbm1hbWEuY29tL3JlZ2lzdGVyLmh0bWw=
  • 目标:通过滑块接口,拿到成功响应

抓包分析

首先点击获取验证码,会发送一个请求,该接口没有加密参数,响应包含了背景图、滑块图以及sessid(后续请求会用到)

1.png

拖动滑块,会再发送一个请求,其中collect和sign是需要逆向的参数。

2.png

如果请求失败,接口返回验证失败。

3.png

如果请求成功,接口返回ticket

4.png

逆向分析

我们先从启动器入手,看到了verify字样,直接进去。

5.png

发现代码被混淆了。

6.png

碰到混淆,老规矩,AST一把梭,当然,也可以硬刚,只是需要多耗点时间。

反混淆后的代码明显更加容易分析了。

7.png

我们先把混淆的文件替换为本地的(具体的替换方法可以自行百度),替换成功后,随便滑动一次失败的。

还是从verify进去,下断,重新滑动一次,发现参数已经生成,在_0x3d1ca1中。

8.png

往前分析,发现_0x3d1ca1经过_0x14c612(_0x481e7d)生成,而_0x481e7d已经有collect,那_0x14c612(_0x481e7d)很可能就是生成sign的。

9.png

再往前分析,发现_0x4b9595经过_0x2440f7({'position': _0x2c2063,'path': _0x1dc4f9});生成,其中_0x2c2063是经过缺口距离计算得出,_0x1dc4f9是轨迹。

10.png

我们先搞清楚加密的逻辑,然后再分析距离和轨迹是怎么生成的。

直接在生成collect处下断点。

11.png

一直跟进去,就会跟到下图的地方,一眼AES,那collect的生成逻辑就是将包含缺口距离和轨迹的对象进行序列化,然后进行AES加密

12.png

接下来分析sign的生成逻辑。

先在_0x3d1ca1 = _0x14c612(_0x481e7d)下断,因为_0x481e7d现在还是没有sign值的,经过这之后就发包了,那sign很可能就是在里面生成的。

13.png

老样子,一直跟进去,就会到下图的地方,其实跟一遍就会挺清晰的,生成sign的逻辑就是先往传入的对象添加一个时间戳,然后将该对象经过_0x40a595方法处理成字符串,然后对该字符串进行MD5就生成了sign

14.png

总的来说,反混淆后,collectsign的逆向并不难。


下面继续分析缺口距离和轨迹是怎么生成的。

我们知道缺口和轨迹都是传参进来,那就一直往前跟栈,就会到下图的地方,其中this["left"]就是经缺口计算的,this["rawList"]就是轨迹。

15.png

先搜索this["left"],会搜到这个地方,setLeft关键字提示我们left应该就是在这被设置的。

16.png

那我们继续搜索setLeft,会搜到这个地方,如果你在这个地方下断,那么你一动滑块它就会断住,你就不清楚参数是怎么生成的。

17.png

所以我们先简单分析分析。

我们要的left_0x4a8918
_0x4a8918可能是_0xd25440 / this["parentWidth"] * 0x64 + 0x0,也可能是0x64 * (0x1 - this["width"] / this["parentWidth"]
如果是第一种情况,那_0xd25440_0x45279e["clientX"] - this["startX"]生成

我更倾向于第一种情况,然后我们下一个日志断点_0xd25440,_0x4a8918

18.png

拖动一次滑块,然后查看日志输出,经比对,_0xd25440是真实的距离,_0x4a8918取的第一种情况。

19.png

left搞定后,我们再看轨迹,前面在setLeft之后直接setRawList了,那我们直接搜索setRawList,就会到下图这个地方,经常搞滑块的朋友看一眼大概就知道怎么回事了。

'x'就是滑块移动的距离(只是这里经过parseFloat(_0x220aec["toFixed"](0x2)) + this["width"] / this["parentWidth"] * 0x64 / 0x2处理,其中_0x220aec就是left的值),'y'就是滑块垂直方向的距离,'t'就是时间。

20.png

所有参数分析完毕,那我们直接模拟请求,缺口距离的识别可以用开源的模型,也可以走打码平台。轨迹可以自行构造,也可以用开源的模型。

模拟请求结果:

21.png

成功!!!

有一说一,加密很简单,难的是风控(具体是啥,自行摸索吧)

免费评分

参与人数 13吾爱币 +11 热心值 +11 收起 理由
Willrain1919 + 1 + 1 我很赞同!
adam717 + 1 谢谢@Thanks!
xiguatailang + 1 热心回复!
Conan0919 + 1 + 1 热心回复!
changhaottt + 1 + 1 我很赞同!
zhansheng + 1 + 1 谢谢@Thanks!
c293943 + 1 热心回复!
wangxiaoqiqiqi + 1 + 1 我很赞同!
mr88fang + 1 + 1 鼓励转贴优秀软件安全工具和文档!
lanshao123 + 1 + 1 谢谢@Thanks!
suixing39 + 1 + 1 热心回复!
liuxuming3303 + 1 + 1 谢谢@Thanks!
抱歉、 + 1 用心讨论,共获提升!

查看全部评分

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

zl59503020 发表于 2024-11-27 23:29
学习了,之前弄阿里淘宝baxia的滑块验证感觉服务端的限制有些莫名其妙,明明是同样的环境有时一次过,有时N次都过不了,应该就是所谓风控限制的吧。
头像被屏蔽
吾爱灰色空间 发表于 2024-11-24 23:32
chen114514 发表于 2024-11-24 20:05
asdasxzca 发表于 2024-11-24 20:12

感谢大佬分享
rev1si0n 发表于 2024-11-24 20:19
感谢大佬分享
MrWu2888 发表于 2024-11-24 20:47
感谢大佬分享经验
wangtx666 发表于 2024-11-24 21:21
感谢分享
xiaobatu 发表于 2024-11-24 21:41
我去,研究了好久!还真是这样
edgrdg 发表于 2024-11-24 21:57
用心讨论,共获提升!
hsmx77 发表于 2024-11-25 08:53
感谢大佬分享,太厉害了
zhengsg5 发表于 2024-11-25 09:27
感谢分享,学习了!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-9 03:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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