JS逆向 | 分享一个小技巧和XHR断点的小案例

你来了,来练手啊。

JS逆向 | 分享一个小技巧和XHR断点的小案例

咸鱼又来练手了,这次来研究下在搜索参数搜不到的情况下怎么办?(仅限XHR请求)

JS逆向 | 分享一个小技巧和XHR断点的小案例

有点经验的朋友肯定知道这次要用的就是 XHR BreakPoint。

关于XHR BreakPoint在很多文档中都有提及,咸鱼就不啰嗦了,还不是很了解的可以看下面的文档。

https://developers.google.com/web/tools/chrome-devtools/

JS逆向 | 分享一个小技巧和XHR断点的小案例

在分析请求之前,咸鱼分享一个调试小技巧。

今天在交流群划水的时候有几个群友比较纠结于如何判断数据是不是由js生成或异步加载的。

我常用的方法有两种:

  • 第一种,右键查看「网页源代码」,之后在打开的网页源码的界面搜索我们想要的数据是否在其中就可以判断了。

  • 第二种,关闭网页的js加载功能,查看网页我们需要的数据是否能够顺利加载或者查看数据是否完整,步骤也非常简单。

第一步: 点击地址栏前端的图示位置,选择网站设置。

JS逆向 | 分享一个小技巧和XHR断点的小案例

第二步: 在权限位置将JavaScript选择为禁止,返回刷新网页,查看数据是否顺利加载。

JS逆向 | 分享一个小技巧和XHR断点的小案例

以上两个小技巧可以大大方便我们的调试,就不用猜来猜去了。

JS逆向 | 分享一个小技巧和XHR断点的小案例

分析请求

用上面的方法我们判断,数据是通过js加载的,并且请求的参数和返回的参数都是经过加密的。

JS逆向 | 分享一个小技巧和XHR断点的小案例JS逆向 | 分享一个小技巧和XHR断点的小案例

到这里就需要 XHR 断点帮助我们定位加密了。

定位加密位置

我们先添加一个XHR断点。

JS逆向 | 分享一个小技巧和XHR断点的小案例

重新刷新页面。

JS逆向 | 分享一个小技巧和XHR断点的小案例

可以看到断点的位置上已经有了我们需要的参数加密。

加密分析-参数加密

我们先找到参数还没有加密的地方。往上找很快就看到参数还没有加密的地方。

JS逆向 | 分享一个小技巧和XHR断点的小案例

可以看到上图1,2两个断点的位置还只是对数据进行序列化等操作,到了第3,4断点的位置参数就被加密了。所以我们可以重新刷新一下看看数据是怎么被加密的。

JS逆向 | 分享一个小技巧和XHR断点的小案例

到这个位置就可以追进去分析了,接下来就比较简单了。

JS逆向 | 分享一个小技巧和XHR断点的小案例

可以看到这里就是参数的主要加密逻辑:

JS逆向 | 分享一个小技巧和XHR断点的小案例

还有就是关于 sig 参数,逻辑也被分析出来了。

JS逆向 | 分享一个小技巧和XHR断点的小案例

接下来就是分析返回的参数解密的位置了。

加密分析-数据解密

数据解密的位置很快也被定位到了,我们看到 l 就是返回的密文.

JS逆向 | 分享一个小技巧和XHR断点的小案例

我现在断点断的位置也就是解密的位置。按照参数加密的方法追进去就可以看到解密的方法了.

把解密和解密的方法扣出来就是我们需要的js代码了。

JS逆向 | 分享一个小技巧和XHR断点的小案例

本文完。

JS逆向 | 分享一个小技巧和XHR断点的小案例

JS逆向 | 分享一个小技巧和XHR断点的小案例