JS逆向 纯异步JS逆向分析

admin 2025年5月5日14:19:54评论3 views字数 1596阅读5分19秒阅读模式

逆向目标

  • 网址:aHR0cHM6Ly93d3cuYXBwbGUuY29tLw==
  • 目标:逆向登录

抓包分析

点击右上角购物袋,选择登录。

首先输入手机号或邮箱,点击箭头,会发起一个init请求,其中a参数需要逆向分析。

JS逆向  纯异步JS逆向分析

该请求的响应在后续请求参数的生成会用到。

JS逆向  纯异步JS逆向分析

然后输入密码进行登录,会发起一个complete请求,其中的m1和m2参数需要逆向。

JS逆向  纯异步JS逆向分析

闲话不多说,直接开整。

逆向分析

  • a参数
    逆向

a的跟栈就不多说了,直接从启动器往前看就可以看到

JS逆向  纯异步JS逆向分析

生成逻辑很清晰,跟着逻辑把代码都扣下来即可。

这里有一个很坑的地方:f = r.publicValue其实是会走publicValuegetter函数的,如果你F10是看不到具体生成逻辑的,必须得F9才可以。

然后publicValue属性也是一个对象,其中的bi、buffer、hex属性也是这种玩法,一定要细心,不要被坑了。

JS逆向  纯异步JS逆向分析

参数a细心耐心点就能搞出来。

  • m1、m2
    参数

还是从启动器进去,下断,发包,跟栈。一直往前跟,就会发现m1和m2是经过异步生成的。

下面就开始讲解这种特征异步的处理方式。

首先我们在异步之前找个地方下断,最好是能断住我们想要的一次请求。我就在下图这个地方下断了,重新请求。

JS逆向  纯异步JS逆向分析

然后就会进到本篇文章所描述的特征点相关的代码,一般是switch (r.prev = r.next),我们直接下断,然后F8,然后单步跟。

JS逆向  纯异步JS逆向分析

这里r.next = 4表明下一次控制流会进入case 4,同时e._getSRPValues的结果就是下一次控制流的r.sent,这个原理我也不太懂,有大佬路过的话可以指点指点,然后我们直接在下一次控制流下断,F8。

JS逆向  纯异步JS逆向分析

可以发现m1和m2已经生成了,那就是我们错过了以下异步逻辑,重新跟。

JS逆向  纯异步JS逆向分析

这一次我们直接跟进去e._getSRPValues,还是一样的特征,该下断的地方都下,然后之后就按照这个逻辑跟了。

由于异步特别容易跟丢,所以我就直接揭开谜底,函数该跟的地方直接说了,下一个需要跟的就是Et

JS逆向  纯异步JS逆向分析

还是一样的特征,下一次有点特别,直接在ze.postMessage下断。

JS逆向  纯异步JS逆向分析

跳到ze.postMessage断点,发现是Worker,这里是postMessage,那我们就找onmessage下断。

JS逆向  纯异步JS逆向分析

可以看到m1和m2已经生成了。

JS逆向  纯异步JS逆向分析

我们网上看一个栈,可以确定就是在这生成的。

按照之前的逻辑m1和m2b1中来,而b1其实就是r.getEvidenceMessage(m)的结果,我们直接清空所有断点,在r.getEvidenceMessage(m)下断,重新发包。

JS逆向  纯异步JS逆向分析

可以看到,参数还没生成,而且h也很熟悉,就是第一个请求的响应。

JS逆向  纯异步JS逆向分析

接下来就是多层Promise了,直接硬刚。

小技巧:我们怎么看哪些函数需要重点跟呢,就是你点进去发现是下面这种形式的,然后基本都会进入一个Promise,跟Promise记得F9,同时,记得在下一次控制流提前下断。

JS逆向  纯异步JS逆向分析

第一次,从r.getEvidenceMessage(m)

JS逆向  纯异步JS逆向分析

第二次,从this.getEvidenceData(r)

JS逆向  纯异步JS逆向分析

第三次,从I函数进

JS逆向  纯异步JS逆向分析

第四次,从e.getHash()

这个promise会进入很多次,后面就不赘述了。

JS逆向  纯异步JS逆向分析

第五次,从与I同层级的A函数进

JS逆向  纯异步JS逆向分析

第六次,从与I同层级的T函数进

JS逆向  纯异步JS逆向分析

第七次,从与I同层级的O函数进

JS逆向  纯异步JS逆向分析

最后,就是在这里生成的m1和m2

JS逆向  纯异步JS逆向分析

扣代码的话就不带着扣了,因为实在是太多了,按照前文所讲的逻辑一步一步跟着扣就可以。

注意点:记住xxx.sent就是上一次控制流的结果,还有就是之前碰到的有bi、buffer、hash属性的对象,要重点关注各自的getter函数

最后直接附上模拟请求结果

JS逆向  纯异步JS逆向分析

成功!!!

账号网址:aHR0cHM6Ly9hcHBzdG9yZS5wYW5iYWlkLmNvbS9zaGFyZS9NVQ==K哥提供

· 今 日 推 荐 ·

JS逆向  纯异步JS逆向分析

本文内容来自网络,如有侵权请联系删除

原文始发于微信公众号(逆向有你):JS逆向 -- 纯异步JS逆向分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月5日14:19:54
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   JS逆向 纯异步JS逆向分析https://cn-sec.com/archives/4029306.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息