文章目录

  • 知乎x-zse-96
    • 1声明:
    • 2案例目标:
      • 2.1网址
      • 2.2接口
    • 3案例分析
      • 3.1抓包分析
      • 3.2全局搜索
      • 3.3 signature
      • 3.4 外层加密函数D
      • 3.5 补环境
    • 4 结果展示

知乎x-zse-96

1声明:

本案例中所有内容仅供个人学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

2案例目标:

2.1网址

aHR0cHM6Ly93d3cuemhpaHUuY29tL3NlYXJjaD90eXBlPWNvbnRlbnQmcT1qYXZh

2.2接口

aHR0cHM6Ly93d3cuemhpaHUuY29tL2FwaS92NC9jb21tZW50X3Y1L2Fuc3dlcnMvMTU0NTU3MTcwNi9yb290X2NvbW1lbnQ/b3JkZXJfYnk9c2NvcmUmbGltaXQ9MjAmb2Zmc2V0PQ==

3案例分析

在解决知乎的某盾的滑块之后发现登陆后拿到评论还有一些参数,所以干脆就直接搞了!!!话不多说开干!!!

3.1抓包分析

找到接口如图,

多次请求发现x-zse-96这个参数在变化。

经过测试发现只需要这个cookies和x-zse-96参数,所以只要搞出x-zse-96就行了

3.2全局搜索

x-zse-96全局搜索,打上断点能断住就对了

断住之后发现是这个参数,t0和tT进行拼接所以逆向tT就行了

3.3 signature

tT又是tE的signature里面来的,断点进去

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VEXuSuDb-1687229167966)(null)]

就是这个参数先看看里面**tg()(td)**参数,看到是32试了一下MD5果然对上了

下面看看td是什么:

ta = tr.zse93 #版本号tu = tr.dc0 #d_c0这个cookie的值tc = tr.xZst81#nulltl = t5(tt)#tl评论urltf = t3(te) #""

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J0kZ6OpS-1687229168083)(null)]

扣出代码后发现t8 is not defined未定义,扣出即可

3.4 外层加密函数D

通过调试可以把随机数写死,即可得到一样的值了

进去这个函数:

转到12319行,发现是webpack打包的,所以选择直接扣,找到加载器

打上断点刷新,就能找到加载器,进去扣下来即可

然后在浏览器运行一下看看能不能出结果,先把MD5写死,浏览器是可以出结果

3.5 补环境

发现在node里面不能运行,需要补环境

这里选择用jsdom

const jsdom = require("jsdom");const { JSDOM } = jsdom;const dom = new JSDOM(`

Hello world

`,{url:"https://www.zhihu.com/"});window = dom.windowlocation = window.locationnavigator = window.navigatordocument = window.document;history = window.history;screen = window.screen;

发现能出来但是和浏览器值不一样

浏览器是这样的

​ 需要修改原型方法

let ccc = Object.prototype.toStringObject.prototype.toString = function () {if (this.constructor.name === 'Document') {return '[object HTMLDocument]'}return ccc.call(this, arguments)}

后面又会报错canvas的错误npm canvas,然后在上面加上一个分支

 else if (this.constructor.name === 'CanvasRenderingContext2D') {return '[object CanvasRenderingContext2D]'}

发现又出现新的 _resourceLoader这个在浏览器是undefined

同样_sessionHistory也是undefined

接着是window的错误,补上这个

alert = window.alert

最后补上这个方法

var Function_tostring = Function.prototype.toStringFunction.prototype.toString = function () {let _sss = Function_tostring.call(this, arguments);if (this.name === 'Window') {return 'function Window() { [native code] }'}return _sss}

终于和浏览器的值是一样的,我们尝试去拿评论也是没问题的!!!

4 结果展示