知乎 x-zse-96 参数逆向

25 年 6 月 19 日 星期四 (已编辑)
533 字
3 分钟

🍔环境准备

  • nodejs

  • python3.8

  • pycharm

🍕项目实施

首先抓包知乎搜索接口

经过调试只需要X-Zse-96X-Zse93X-Zst-81,而X-Zse93X-Zst-81和为固定参数,

直接搜索参数可以看到第一个即是关键点

向上跟一栈可以看到参数构成位置

我们可以看到x-zse-96参数是由tk来的,而tk又是由tT.signature,tT构成由ed来的,我们跟进ed看看

进来可以看到是通过

js
;(0, tJ(ti).encrypt)(ty()(tp))

得到的加密参数

tp由上面几个参数拼接而来

ta是固定的

tu是传参进来的,我们跟回去

可以看到由tO由er函数得来 我们跟进

一个正则用于匹配cookie中d_c0的值

提取代码成功打印出d_c0

之后咱们回到刚刚的加密出进入第一层加密

加密出来有点像md5,我们使用标准md5加密试试

可以看到确实是标准md5,这一层就过了

进入第二层可以看到exports,

最上方又有webpack,所以这是一个webpack打包的

该模块为1514,我们下断点尝试找到加载器

向上跟一栈我们可以找到加载器

我们将加载器和模块都复制下来

创建全局xx,用于导出p,并且打印调用了哪些模块方便排查

报错没有self,我们将self全部换成window去承接

顺手补一个window,可以看到没报错,尝试调用加密函数

别忘记D函数是导出给ZP了

成功调用 接下来我们只需要保留1514和74185模块就行了

运行结果发现和浏览器的值不一样,猜测有检测,我们挂上代理补环境

好多原型链检测,还有canvas

补完环境后固定一下随机数即可发现加密参数一致了

🍟项目总结

js逆向这东西还是要多扣,熟练webpack调用方式,多尝试挂代理,使用固定参数确认是否一致,不一致的时候推测是否进了蜜罐,多观察try。

文章标题:知乎 x-zse-96 参数逆向

文章作者:Sherry

文章链接:https://sherry77.me/posts/2db1a86f[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。