【猿人学逆向题】第20题 - 2022新年挑战

0 阅读2分钟

给岁月以文明,而不是给文明以岁月。 -- 《 三体 》


📓 前言

笔者的话:最近接触到“猿人学”这种逆向刷题网站,感觉还挺有意思的,于是决定专门出个 专栏 讲一讲做题的一些思路,也算是一种学习记录了,加纳!!!

🅰 题目

网址:https://match.yuanrenxue.cn/match/20

📜 正文

看一下 题目

什么也没说,看一下请求的 接口 ,点击翻页会有两个接口

一个是请求 时间戳

另一个是参数加了密

t 的话是 getTime 接口返回,主要是这个 sign 值,关键字搜索找到了加密位置

p 是页码数

t 是接口返回的 时间戳

看一下 m

嗯?!,看起来是 webpack 啊,看一下它的定义位置

还真是,全局搜特征关键字 WebAssembly.instantiate

刷新 页面之后,发现断点断住了,那就证明这里就是 webpack 的初始化位置了

wasm 文件在哪?req 的定义位置

网络 面板也能看见

importObject 呢,在上方也可以找到

wasmModuleId 是固定值

wasmImportObjects 可以这样找:直接随便在模块中选一个方法,点过去

然后往上翻就行

代码逻辑就是这样,接下来就是在本地操作了,先把 wasm 文件下载下来

先把前置代码复制到本地

然后调用 webpack

报错了,说是 installedModules 未定义

去全局搜的话,找到一个 空对象

肯定是在后面赋值了,接着找

其实这个看起来复杂,但你只要在报错的代码处打上 断点 并触发

其实就是它这个代码没有把具体的方法写在 importObject 里面,而是通过 索引的方式访问,那就需要扣更多的代码,我们只是需要调用它这个方法,可以这样写,先定义 installedModules

我们主要就是需要填充 exports 中的方法,随便点击一个方法进去

这些方法就放在一块,全部复制即可

然后修改成 键值对 的形式即可

报错

未定义的直接去浏览器中的 JS 代码中找就行了

这个看一下是什么

webpackmodule 对象,在下图位置复制即可

注:因为没用 var 声明,这个就是全局变量,如果用 var 声明就用了。

**

接下来的缺失的方法就是 常规 补发,在此不做赘述

知道出现这个报错

简单用 jsdom 模拟一下,看看能不能过

看来没有做严格的 环境监测 ,这里是直接过掉了,接着就常规补充(缺什么去浏览器找)

也是直接成功生成了

请求结果


更多有趣内容,可关注wx公众号“小恰学逆向”,分享一些爬虫JS逆向技术以及有趣的工具。(●´ω`●)ゞ