知乎x-zse-96(webpack+补环境详解)

知乎x-zse-96

1声明:

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

2案例目标:

2.1网址

aHR0cHM6Ly93d3cuemhpaHUuY29tL3NlYXJjaD90eXBlPWNvbnRlbnQmcT1qYXZh

2.2接口

aHR0cHM6Ly93d3cuemhpaHUuY29tL2FwaS92NC9jb21tZW50X3Y1L2Fuc3dlcnMvMTU0NTU3MTcwNi9yb290X2NvbW1lbnQ/b3JkZXJfYnk9c2NvcmUmbGltaXQ9MjAmb2Zmc2V0PQ==

3案例分析

image-20230620092518632

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

3.1抓包分析

image-20230620093114318

找到接口如图,

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

image-20230620093351531

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

image-20230620093808970

3.2全局搜索

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

image-20230620094005123

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

image-20230620094204856

3.3 signature

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

image-20230620094410972

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

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

image-20230620095002151

下面看看td是什么:

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

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

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

image-20230620095742257

3.4 外层加密函数D

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

image-20230620101133382

进去这个函数:

image-20230620095901632

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

image-20230620100015039

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

image-20230620100248668

image-20230620100340114

image-20230620100532322

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

image-20230620101255302

3.5 补环境

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

image-20230620101520875

这里选择用jsdom

const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const dom = new JSDOM(`<!DOCTYPE html><p>Hello world</p>`,{url:"https://www.zhihu.com/"});
window = dom.window
location = window.location
navigator = window.navigator
document = window.document;
history = window.history;
screen = window.screen;

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

浏览器是这样的

image-20230620101918134

​ 需要修改原型方法

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

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

image-20230620103051100

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

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

image-20230620102748051

image-20230620102611112

同样_sessionHistory也是undefined

image-20230620103132697

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

image-20230620103302224

alert = window.alert

image-20230620103558927

image-20230620103635659

最后补上这个方法

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

image-20230620103754824

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

4 结果展示

image-20230620103904604

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值