回答

收藏

JS逆向 | 某招聘网站cookie分析

信息分享 信息分享 3046 人阅读 | 0 人回复 | 2020-06-15


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

目标网站:

aHR0cHM6Ly93d3cuemhpcGluLmNvbS9qb2JfZGV0YWlsLz9xdWVyeT1qYXZhJmNpdHk9MTAxMjgwNjAwJmluZHVzdHJ5PSZwb3NpdGlvbj0=

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


图1 Hook Cookie(摘自夜幕成员-花儿谢了)
保存脚本并打开开关,清空cookie后重新刷新页面,成功断下,且值已经生成了



图2
往上跟踪堆栈,发现其为
  1. ABC
复制代码
类的
  1. z
复制代码
方法生成,传入的实参为
  1. seed
复制代码
  1. ts
复制代码
复制代码
图3
这两个值都在上面生成,因此我们在上面打下断点,清空cookie后再次刷新页面



图4
跟进
  1. getQueryString
复制代码
方法看下,即点击红框部分,或按F11运行进入
  1. var getQueryString = function(name) {
  2. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
  3. var r = window.location.search.substr(1).match(reg);
  4. if (r != null) return unescape(r[2]);
  5. return null;
  6. };
复制代码
分析以上代码,实际就是取
  1. window.location.search
复制代码
中的参数值,注意编码转换


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



图6
继续运行,使之停在这里



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



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



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



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



图11
遇到检测浏览器环境的,通常有两种做法:一是直接将检测的代码删除,同时将逻辑修改成与浏览器运行逻辑一致,如
  1. // 将以下代码
  2. if (typeof document.getElementById == "function") {
  3. a = 10;
  4. }
  5. if (window.global != undefined) {
  6. b = 20;
  7. }
  8. // 修改成如下即可
  9. a = 10;
复制代码
因为在浏览器中,条件1成立,而条件2不成立。由于这段JS代码是动态变化的



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



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

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



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

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



公众号参考资料[1]
本人Github: https://github.com/DingZaiHub/PythonSpider



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
分享到:
回复

使用道具 举报