关于x-zst-81与cookie中的__zse_ck的分享简析
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,联系作者立即删除!
网址:aHR0cHM6Ly93d3cuemhpaHUuY29tLw==
需要分析的加密值:x-zst-81,__zse_ck
老样子 直接搜索这里就不说是哪个位置了 搜索出来的结果没有多少 如果还不知道 所有打上断点
这是最终断下的位置 下面是执行的结果
直接更近ed函数里面 看看做了写什么
发现都是取这些数据 然后传入判断 最后在拼接了一下 这里可以直接扣
看下这个函数 (0,tJ(ti).encrypt)(ty()(tp)) 先看ty()(tp) 先加密这个然后再传入(0,tJ(ti).encrypt)方法里面 看下下面运行结果 先把拼接其他的tp 然后md5了一下然后encrypt方法里面
跟进去会断在这里
整体看下 发现是webpack 调用 呢就直接用webpack调用
到这里不就简单了嘛 对吧。呢就直接用这个自动扣吧 (webpack怎么调用这里就不多了 有很多大佬说的比我清楚 这里就不献丑了)
const fs = require('fs');
window.pk = {}
!function(o) {
function r(e) {
if (n[e])
return n[e].exports;
if(!window.pk[e+""]){
window.pk[e+""] = o[e]
}
var d = n[e] = {
i: e,
l: !1,
exports: {}
};
console.log(e)
return o[e].call(d.exports, d, d.exports, r),
d.l = !0,
d.exports
}
window.load=r
}([]);
console.log(window.load('2295'))
console.log(window.pk)
// 准备要写入文件的字符串
let fileContent = 'module.exports = {\n';
for (const [key, func] of Object.entries(pk)) {
fileContent += ` '${key}': ${func.toString()},\n`;
}
fileContent += '};';
// 写入新文件
fs.writeFile('pkFunctions.js', fileContent, (err) => {
if (err) {
console.error('写入文件时出错:', err);
} else {
console.log('对象已成功写入 pkFunctions.js 文件');
}
});
然后就是调用运行了。最终发现没有这么简单 这里就不说了 直接到纯算吧 下面是需要补的环境
下面是运行结果 因为调用__g._encrypt(encodeURIComponent(tt))函数每一回的值都不一样 所以我们这里固定一下 代码也放在这里了 下面是调用结果
Date.now = function () {
return 1722796003157
}
Math.random = function () {
return 0.1722796003157
}
直接进入纯算吧
然后日志输出这个 th. s.T 心累了 不是很想说了 先对传入的md5 然后对改数据进行操作
下次再说__zse_ck 下面是运行的结果
作者:程序员pick