js清空本地存储_JS逆向 | 某招聘网站cookie分析

461fc032aa5f968fe5803ea1054d7542.png

所有文章首发在我的微信公众号“逆向新手”,更多逆向系列请关注公众号,谢谢!

声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢!

目标网站:

aHR0cHM6Ly93d3cuemhpcGluLmNvbS9qb2JfZGV0YWlsLz9xdWVyeT1qYXZhJmNpdHk9MTAxMjgwNjAwJmluZHVzdHJ5PSZwb3NpdGlvbj0=

本次目标为获取cookie __zp_stoken__ 这里介绍一种快速定位cookie加密的方法:浏览器安装油猴插件(自行百度),编写脚本如下

38a715d6369c58676308dab72f0c8cf5.png

保存脚本并打开开关,清空cookie后重新刷新页面,成功断下,且值已经生成了

d07e8d2d84fbc73d1a2cc0e8d9033629.png

往上跟踪堆栈,发现其为ABC类的z方法生成,传入的实参为seedts

1d95fdfe062fed86bf9b96de6d4a3821.png

这两个值都在上面生成,因此我们在上面打下断点,清空cookie后再次刷新页面

8383b2abb8fba1394d81155569c904df.png

跟进getQueryString方法看下,即点击红框部分,或按F11运行进入

var getQueryString = function(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) return unescape(r[2]);
    return null;
};

分析以上代码,实际就是取window.location.search中的参数值,注意编码转换

cc8573eeaea31ae574b58211f67d5739.png

那么这段url哪里来的呢?原来就是请求目标网站后302跳转的

454a6c002eb3843df752f5087b62f718.png

继续运行,使之停在这里

f3c4dcb7ad5376c9c17787a8fe253be6.png

按F11跟进后,发现代码混淆的比较严重

c205086dc9f27fb3f877b7e0848a5828.png

拉到最上面,可以看出是很明显的ob混淆

3783bf33c654af1884369eefbfa20c6b.png

这时候可以利用我之前介绍的ob混淆还原工具配合正则替换的方法,可以将代码量缩减到原来的一半左右,且逻辑比较清晰了,如图:

355bd62a3175032379750d3d7aef87a7.png

现在直接在本地调试即可。调试时发现代码中大量检测了浏览器环境,如

24b9f4fe434a24eb3e1f49c58528dd41.png

遇到检测浏览器环境的,通常有两种做法:一是直接将检测的代码删除,同时将逻辑修改成与浏览器运行逻辑一致,如

// 将以下代码
if (typeof document.getElementById == "function") {
  a = 10;
}
if (window.global != undefined) {
  b = 20;
}
// 修改成如下即可
a = 10;

因为在浏览器中,条件1成立,而条件2不成立。由于这段JS代码是动态变化的

9c24e592f3944e1c29abd987284c5ce0.png

它前四位就是根据代码中动态生成的,所以方法一在这里不可行,因此只能采用方法二

74e08f9ac9b4f2b9d1ada67e0f9f2344.png

方法二不用修改代码,我们直接伪造浏览器环境,使代码可以像在浏览器环境中一样运行。如何伪造请看这篇《JS逆向 | 骚操作教你如何伪造浏览器环境》

最后直接将获取的参数、代码执行eval即可获得cookie。需要注意的是,它不仅只有一套代码,我碰到了两套,需要根据不同的代码伪造不同的环境,最后合成通用的环境即可,最终能获取到网页源码即成功,如图:

07231a9c87aea229abcd7f3d39588a73.png

代码已经放到本人Github[1],需要自取,完!

欢迎关注我的公众号“逆向新手”,逆向系列将持续更新!

参考资料

[1] 本人Github: https://github.com/DingZaiHub/PythonSpider

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值