JS逆向实战14——猿人学第二题动态cookie

2024-01-15 13:10

本文主要是介绍JS逆向实战14——猿人学第二题动态cookie,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

声明

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

目标网站

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

网站分析

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

发现是从第二请求开始的,所以cookie 大概率是第一个请求哪里生成的 cookie

cookie断点分析

在次之前,我们打开浏览器中去找cookie的生成点。
打开脚本 按步追栈追到这个cookie生成的文件中。也就是第一个请求发送的地方
然后我们放开断点。
走到m这个断点的地方。然后向下追栈
然后就找到了m的生成地址了
把他们都替换掉

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']);


再分解
由此可知

_0x1451c6['kbttD'](_0x57de99, _0x4b00b1) + "|" + _0x4b00b1
'6c0a673aa5ac9a0d6d06d93c80e399dc|1685066745000'
  • _0x1451c6['kbttD'](_0x57de99, _0x4b00b1) : cookie
  • _0x4b00b1: 时间戳

扣代码


====>
可改写成

_0x1f5c0f['uHywV'] = function(_0x167a6d, _0x403944) {return _0x167a6d < _0x403944;};

后面就是逐步扣代码注意

  1. 扣的时候一定要有耐心
  2. 注意有坑,正则校验 直接搜索 new Regex
    这是文中的两处正则格式化校验 修改成如下
1.. 'removeCookie': function() {return 'dev';},
2. this['husxWe'] = function() {return 'newState';}
  1. node 环境定义
var window = global;
  1. 浏览器环境检测 需要定义一个navigator
    可见这个是浏览器指纹
    有两种解决方案

    1. 直接把这个地方替换成 ''
      因为浏览器执行出来的也是空
    2. 重新伪装navigator 补环境
  2. history 未被定义 console.log 被重写
    等到最后打印的收会报错
    这里也有两种解决方案

  3. 在最开始的时候定义console.log 把console.log 赋值给另一个值

result = console.log;
  1. 用console.warn,console.debug (总有一个没被改写)

完成

后面就是缺啥补啥 其实非常麻烦。
然后补完之后运行我们的代码

成功生成m的值,然后我们丢到python中运行
可以成功运行

这篇关于JS逆向实战14——猿人学第二题动态cookie的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/609004

相关文章

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统