15_猿人学第二题动态cookie

Date
May 26, 2023
Created
Mar 2, 2024 03:00 PM
Tags
JS逆向实战

声明

本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!

目标网站

https://match.yuanrenxue.cn/match/2

网站分析

首先已经告诉了我们这个网站是动态cookie,所以我们首先打开devtools看看哪个cookie,然后我们用代码运行下
notion image
notion image
然后发现cookie的有效期很短,我们搜索有没有set_cookie 发现并没有
notion image
然后我们用fiddler 抓包看看 我们搜索这个cookie的值
notion image
有时候可能hook不到值,没关系 点击下一页去hook 不要刷新去hook
发现是从第二请求开始的,所以cookie 大概率是第一个请求哪里生成的 cookie
notion image

cookie断点分析

在次之前,我们打开浏览器中去找cookie的生成点。
notion image
打开脚本 按步追栈追到这个cookie生成的文件中。也就是第一个请求发送的地方 然后我们放开断点。
notion image
走到m这个断点的地方。然后向下追栈
notion image
然后就找到了m的生成地址了 把他们都替换掉
notion image
document["cookie"] = _0x1451c6['FZXLU'](_0x1451c6['FZXLU'](_0x1451c6['TWByt'](_0x1451c6['eKhua'](_0x1451c6['eKhua'](_0x1451c6['zzVOs']('\\x6d', _0x1451c6['PUMJe'](_0x52509a)), '\\x3d'), _0x1451c6['kbttD'](_0x57de99, _0x4b00b1)), '\\x7c'), _0x4b00b1), _0x1451c6['GBiTC']);
notion image
再分解
notion image
notion image
由此可知
_0x1451c6['kbttD'](_0x57de99, _0x4b00b1) + "|" + _0x4b00b1 '6c0a673aa5ac9a0d6d06d93c80e399dc|1685066745000'
  • _0x1451c6['kbttD'](_0x57de99, _0x4b00b1) : cookie
  • _0x4b00b1: 时间戳

扣代码

notion image
====>
notion image
可改写成
_0x1f5c0f['uHywV'] = function(_0x167a6d, _0x403944) { return _0x167a6d < _0x403944; } ;
后面就是逐步扣代码 注意
  1. 扣的时候一定要有耐心
  1. 注意有坑,正则校验 直接搜索 new Regex 这是文中的两处正则格式化校验 修改成如下
    1. notion image
      notion image
1.. 'removeCookie': function() {return 'dev';}, 2. this['husxWe'] = function() {return 'newState';}
  1. node 环境定义
var window = global;
  1. 浏览器环境检测 需要定义一个navigator 可见这个是浏览器指纹 有两种解决方案
    1. notion image
      notion image
      notion image
    2. 直接把这个地方替换成 '' 因为浏览器执行出来的也是空
      1. notion image
    3. 重新伪装navigator 补环境
  1. history 未被定义 console.log 被重写 等到最后打印的收会报错 这里也有两种解决方案
    1. notion image
  1. 在最开始的时候定义console.log 把console.log 赋值给另一个值
result = console.log;
  1. 用console.warn,console.debug (总有一个没被改写)

完成

后面就是缺啥补啥 其实非常麻烦。 然后补完之后运行我们的代码
notion image
成功生成m的值,然后我们丢到python中运行
notion image
可以成功运行