🍔环境准备
-
nodejs
-
python3.8
-
pycharm
🍕项目实施
首先抓包知乎搜索接口
经过调试只需要X-Zse-96
,X-Zse93
,X-Zst-81
,而X-Zse93
和X-Zst-81
和为固定参数,
直接搜索参数可以看到第一个即是关键点
向上跟一栈可以看到参数构成位置
我们可以看到x-zse-96
参数是由tk来的,而tk又是由tT.signature,tT构成由ed来的,我们跟进ed看看
进来可以看到是通过
(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。
Comments NOTHING