本文纯技术交流,与平台无任何关系
1.抓包分析
我们进入到章若楠的主页面,进行抓包分析,发现有很多包,发现web/aweme/post这个包比其他的包都大,很有可能就是我们想要的数据
进去查看预览发现这个就是我们想要的数据
请求标头里没发现有需要逆向的参数
载荷里发现sec_user_id明显就是章若楠小姐姐对应的id咯,然后就是a_bogus和msToken这两个看起来都像是需要逆向的,想练手的可以试着都做做,但是我这里告诉你只需要校验a_bogus
2.代码分析
(1)首先我们搜索a_bogus发现搜索不到这,那怎么办,那首先就要运用到今天的第一个断点xhr断点 ,
我们复制一小段这个url在这里,然后刷新页面吗,就会断住
观察到这个this已经生成了a_bogus(以后直接简称ab值),所以现在用启动器往前找
最后我们定位到这个位置,接下来要运用到第二种断点,日志断点
这样就会在控制台打印s.apply(b, u)的值
发现这个和ab值长度差不多,所以这里基本上就是xb值的生成位置了,接下来我们肯定是要他只断在生成ab值的地方,那接下来就要介绍第三个断点,条件断点
添加条件s.apply(b, u).length==168这就是了
(sorry!刚才忘记和你们说ab值是168位了!!!求原谅!!!你们不信就快去试试!!!)
然后我们进去代码,发现已经没法读了,那我们就抠代码啦
3.抠代码
就直接全c放到pycham里了,全扣就是这么简单。(没错我就是在水流程)
4.补环境
发现报错,就是我们要补的环境了
这里我们补好了window,发现接下来报错根本无从下手,这里介绍一个proxy代理
问:什么是proxy代理
JavaScript 中的代理(Proxy)是一种强大的功能,它允许你拦截并自定义 JavaScript 对象的基本操作,比如属性查找、赋值、函数调用等。这意味着你可以在对象的访问和修改过程中插入自定义的行为,从而实现更高级的逻辑或者限制访问。
具体来说,JavaScript 的 Proxy 对象允许你定义一个“代理”,这个代理包装了另一个对象(称为目标对象),并且可以拦截对目标对象的操作。当你对代理对象进行操作时,这些操作可以被拦截并被自定义处理,然后再决定是否传递给目标对象。
比如,你可以使用 Proxy 来实现以下功能:
- 属性验证和过滤: 在获取或设置对象的属性时,可以验证属性值的合法性,并根据需要进行过滤或者转换。
- 拦截函数调用: 可以在调用对象的方法之前或之后执行额外的逻辑,比如记录日志、性能监控等。
- 隐藏属性: 可以隐藏对象的某些属性,使其对外部代码不可见或不可修改。
- 数据响应式: 可以通过拦截对象的属性操作来实现响应式数据的更新和通知。
这里我给出我的proxy代理代码
function setProxy(proxyObjs) {
for (let i = 0; i < proxyObjs.length; i++) {
const handler = `{
get: function(target, property, receiver) {
if (property != "Math" && property != "isNaN") {
if (target[property] && typeof target[property] != 'string' && Object.keys(target[property]).length > 3) {
} else {
console.log("方法:", "get ", "对象:", "${proxyObjs[i]}", " 属性:", property, " 属性类型:", typeof property, ", 属性值:", target[property], ", 属性值类型:", typeof target[property]);}}
return target[property];
},
set: function(target, property, value, receiver) {
console.log("方法:", "set ", "对象:", "${proxyObjs[i]}", " 属性:", property, " 属性类型:", typeof property, ", 属性值:", value, ", 属性值类型:", typeof target[property]);
return Reflect.set(...arguments);
}
}`;
eval(`try {
${proxyObjs[i]};
${proxyObjs[i]} = new Proxy(${proxyObjs[i]}, ${handler});
} catch (e) {
${proxyObjs[i]} = {};
${proxyObjs[i]} = new Proxy(${proxyObjs[i]}, ${handler});
}`);
}
}
接下来就是代理window,location,navigator,document等等,就开始补环境了这里我就不过多赘述了
5.导出函数
首先我们再次进去浏览器,观察参数,发现主要是传的参数是个数组,其中5是ua,3是载荷进行url拼接
我们在pycham搜索59 !=m,然后加上window.xxx=u,这样我们就把u函数成功导出了
发现ab值已经出现,这里给出我最后执行的代码,到时候只需要python调用js生成ab值即可
function fn(data) {
var r = window.xxx._v;
ag=[
0,
1,
1,
data,
"",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
]
return (0,
window.xxx._u)(r[0], ag, r[1], r[2], this)
}
6.效果演示
测试完成,逆向成功
这样大家就可以获得章若楠小姐姐的全部信息啦,给位lsp还能获取其他小姐姐们的
7.补充
本文因为版权问题,不能展示图片,有需要的私信我就好,有求必应