js逆向——异步栈分析(上)

案例1:

受害者网站:https://m.ctyun.cn/wap/main/auth/login

首先抓包分析一波

发现是xhr请求,可以跟栈调试,相对还是容易一些

前面三个一般是send,ajax,xmlhttprequest这种封装好的发包的库,一般不用在意,当然如果习惯从第一个函数开始分析也是可以的

 

由于前面几个靠前的基本是发包函数,所以可以接着向下分析异步的栈

 

1、给异步的函数下断

这里的异步是一个while循环,不断取出一些回调函数来执行,对于then前面的e.shift表示执行成功的情况,而后面的e.shift表示执行失败的情况,而e是一个数组,用于存放很多异步的回调函数,shift相当于栈里面的pop,用于从异步栈当中取出,执行,并删除栈顶的回调函数

注意下断点的时候一定要下第一个e.shift,否则对于一些多线程的情况可能断不下来

 

2、找到合适的时机让他断下

当接口地址是account/login的时候再去观察数组e

我们向下看调用栈,找到合适的下断位置(一定能够找到)

其实可以找到2处合适的位置

 

 

上面2处位置都可以,然后我们还需要记录一下n = n.then(e.shift(), e.shift());的位置在文件chunk-vendors.a1bfb9a0.js:formatted的第668行,然后先取消断点,等时机到了再打上!!!

然后我们重新运行

其实可以发现运行异步之前加密密码已经生成了😂😂😂,说明加密算法不在异步里面(我们假装没看见)

这个时候的接口地址正好是account/login,所以我们找到chunk-vendors.a1bfb9a0.js:formatted的第668行重新打上断点,然后运行

此时就进入到正确的异步栈了

进入数组的第一个函数

 

将所有断点移除,然后在异步栈里面下断

 

重新点击登录,进入异步栈里面发现加密参数已经生成,说明它不是由异步操作生成的,这种情况直接跳过异步,正常向下跟栈即可

 

其中大部分都是chunk,可以找一些有用的信息位置,不妨看一看有没有生成加密,如果没用加密信息了也没啥大不了的,直接往上一个找即可

 

果然很快就找到了加密位置

 

案例2

点点数据

受害者网站:https://www.diandian.com/ 

首先快速定位接口,发现是xhr可以跟栈,就比较巴适了

前三个函数很有可能是封装的发包函数,直接跟异步的栈

 

到异步的位置同样记录一下文件名和行号(因为异步有很多回调,需要等到时机再打断点)

app~253ae210.bad26c3.js:formatted 655行

根据url定位

在异步这里一定要进入第0个位置,如果不是就再次运行,直到断到数组的第0号位置

 

松开其他断点直接进入函数内部

 

在整个函数的作用域耐心查找关键点(加密一般是函数的形式)

 

很快就跟到加密参数生成的位置了

 

案例三

高考填报志愿网站

https://www.jizhy.com/ 

就当课后作业自行练习巩固即可

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值