猿人学之乱码增强

篇幅有限

完整内容及源码关注公众号:ReverseCode,发送

题目

https://match.yuanrenxue.com/match/5

image-20210911101359005

抓包

cookie有两种获取方式,一种是服务器返回,一种是本地js生成。

60秒后点击下一页弹窗cookie已失效,并刷新网页,导致之前设置的断点或者hook被清掉,重新发起请求。

https://match.yuanrenxue.com/api/match/5?m=1631326686273&f=1631326686000

m和f明显就是时间戳,cookie中Hm开头的是浏览器设置的,主要关注mRM4hZBv0dDon443M的内容。通过搜索m的值发现从一开始没有返回突然就出现了该cookie,即本地js生成的cookie,也有可能chrome看不到某些请求的preview返回的数据,RM4hZBv0dDon443M同理。

image-20210911102141645

题目中表明了cookie只有50秒的有效期,不会再次生成了,因为如果每次请求都重新生成, 肯定是一直有效的了,大概是失效之后,带着该cookie重新reload网页请求时计算cookie才重新生成。

分析

每次刷新后只会刷新到第一页,搜索cookie已失效,发现location.reload()不论本地是否缓存js或css都会重新请求,彻底刷新。

image-20210911102853827

搜索RM4hZBv0dDon443M又搜不到,有可能字符串拼接或混淆了,搜索m =m=m:匹配条数太多,搜索cookie出现位置也很多,再通过回溯定位request方法

image-20210911104926661

该调用栈中只有m和f的定义,未出现cookie的定义位置

image-20210911105152584

只好再次通过hook找到document.cookie在赋值前注入进去我们的js,直接注入是无法注入的,因为网页刷新会清除cookie,所以需要先找到在网页已经刷新但是还没有加载cookie发送请求之前的断点。

清除页面cookie,刷新页面后,进入该断点

image-20210914082221949

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(function () {
//严谨模式 检查所有错误
'use strict';
//document 为要hook的对象 这里是hook的cookie
Object.defineProperty(document, 'cookie', {
//hook set方法也就是赋值的方法
//当前也可以hook get方法
set: function (val) {
//这样就可以快速给下面这个代码行下断点
//从而快速定位设置cookie的代码
if (val.indexOf('RM4hZBv0dDon443M') != -1) {
debugger;
}
console.log('Hook捕获到cookie设置->', val);
return val;
}
});
})();

如果找不到该断点的时候,即部分请求一开始就加载了该cookie,可以通过fd正则匹配地址添加hookimage-20210914083703255

过了多次debugger后直到遇到val有值的时候,根据右侧调用栈回溯

image-20210914084016194

第二层时发现该js是动态生成的虚拟js,且RM4hZBv0dDon443M被分割成一个一个字母,所以搜不到,而_0x4e96b4就是window对象,

image-20210914085057539

接下来再通过hook找到window._$ss赋值的地方

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(function () {
//严谨模式 检查所有错误
'use strict';
//document 为要hook的对象 这里是hook的cookie
Object.defineProperty(window, '_$ss', {
//hook set方法也就是赋值的方法
//当前也可以hook get方法
set: function (val) {
//这样就可以快速给下面这个代码行下断点
//从而快速定位设置cookie的代码
debugger;
console.log('Hook捕获到cookie设置->', val);
return val;
}
});
})();

image-20210914090334061

看到modepadding

31:04

文章作者: J
文章链接: http://onejane.github.io/2021/09/11/猿人学之乱码增强/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 万物皆可逆向
支付宝打赏
微信打赏