文章目录
- 知乎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}
终于和浏览器的值是一样的,我们尝试去拿评论也是没问题的!!!