爬虫逆向学习(七):补环境动态生成某数四代后缀MmEwMD

news2024/9/24 17:37:40

声明:本篇文章内容是整理并分享在学习网上各位大佬的优秀知识后的实战与踩坑记录

前言

这篇文章主要是研究如何动态生成后缀参数MmEwMD的,它是在文章爬虫逆向学习(六):补环境过某数四代的基础上进行研究的,代码也是在它基础上增加补点的,且下文破解的接口所需的cookie也可以直接用它的代码得到。

MmEwMD

某数针对xhr请求会在其后缀增加MmEwMD参数,它魔改了xhropen方法,而MmEwMD就是在open方法执行时生成的,某数并没有强制请求一定要携带MmEwMD参数,但是如果携带了它就一定会校验,校验失败则返回400。
在这里插入图片描述

实战

生成位置定位

站点:aHR0cDovL3d3dy5mYW5nZGkuY29tLmNuL25ld19ob3VzZS9uZXdfaG91c2UuaHRtbA==
目标接口:aHR0cDovL3d3dy5mYW5nZGkuY29tLmNuL3NlcnZpY2UvZnJlc2hIb3VzZS9nZXRTZXZlbkRheXNSYW5raW5nLmFjdGlvbg==
其实就是这个排行版,不过所有接口都是一套逻辑,都可以用来实验。
在这里插入图片描述

查看包的调用栈,点击下图红框的堆栈进入执行代码
在这里插入图片描述

前面我们知道了某数魔改了xhropen方法并在此实现MmEwMD生成的,这时就直接锁定s.open,在这里打断点,重新刷新页面,将断点在这里断住后跟进去
在这里插入图片描述

可以看到这里就是生成位置了,至于更深入的生成位置这里不研究,因为我在深入研究后发现这个位置比较适合补环境,当然大家学习时可以深入研究,MmEwMD的生成逻辑并不难,算法实现也未尝不可。
在这里插入图片描述

补环境思考

这里是选择补环境的方式进行破解的,如果想算法破解,可以参考瑞数4——MmEwMD逆向分析,这篇文章很详细得分析了MmEwMD参数的生成逻辑。

在实现参数的补环境时,其实有过思考:

既然某数是魔改了xhr,那能不能在nodejs模拟xhr发包,直接拿到魔改后的url呢?
如果这种方式可以实现,那不需要深入研究代码就能快速拿到加密结果了,但是很遗憾,我使用nodejs包xmlhttprequest进行hook发包,但是没法hook到,浏览器端使用的window.XMLHttpRequest,没法复现。

生成代码中哪个位置是比较容易执行的?
这个位置其实就是前面生成位置定位中指明的,我是这么思考的
这里选择的是通过_$O3得到加密结果,如果直接调用_$xI,那得创建xhr对象,执行会报错。大家可以去看_$O3的代码,它只需要一个参数也就是url,且它的代码本身就是在处理url,如果使用比它更细的维度方法,可能会执行异常。
在这里插入图片描述

MmEwMD是在VM层生成的,且每次代码都会变化,怎么实现动态生成的?
只要我们能动态拿到_$O3方法然后将其导出,那无论VM怎么变都不影响了。
这里说一下,VM这一层是调用.call执行得到的,它的代码会根据content和外链js变换而变化,我们在调试时可以直接拿到call后的代码,写死能方便我们调试。在补成功拿到加密结果后,就可以使用正则匹配在执行call前匹配替换加入自己的导出代码。
在这里插入图片描述

破解

这里我们还是在原来的代码上处理,我们直接把call后的代码复制给ret,它本身是自执行函数,然后我们创建全局变量params_enc导出关键代码函数_$d0
在这里插入图片描述
注意我调试的代码方法名变了,大家根据自己实际的代码情况处理
在这里插入图片描述

这时我们就拿到了目标函数,直接执行它
在这里插入图片描述

看执行结果发现并没有加密,这时我们就知道是document.createElement('a')出的问题了
在这里插入图片描述

这里使用debugger将它断住,看看是哪里调用的它
在这里插入图片描述

看代码知道它对取值结果做了很多判断
在这里插入图片描述

做以下处理,将a加入hook环境中,看看它都做了啥
在这里插入图片描述

缺啥补啥,值去浏览器拿
在这里插入图片描述

最终需要补全,都是必须要的,补好就能拿到结果了
在这里插入图片描述
在这里插入图片描述

动态获取

上面我们在代码写死条件下实现了参数加密,不过在调用时总归是要实现动态的,毕竟我们每次获取的content和自执行函数是不同的,上面我们说要用正则匹配来拿到目标函数,其实就是两个地方

  1. 找到ret = _$b6.call(_$Yq, _$cZ)并将_$cZ拿出来
  2. params_enc = _$d0;放进_$cZ

思路就是这个思路,给大家看看我实现的正则匹配后结果
匹配前
在这里插入图片描述
匹配后
在这里插入图片描述
我实在python层实现的正则匹配
在这里插入图片描述

破解结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2160966.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为HarmonyOS灵活高效的消息推送服务(Push Kit) -- 10 推送实况窗消息

场景介绍 实况窗是一种帮助用户聚焦正在进行的任务,方便快速查看和即时处理的通知形态。有关实况窗简介、权限申请、开放场景、设计规范等说明,请参见Live View Kit简介。 通过Push Kit发送的实况窗消息支持三种操作类型,分别是&#xff1a…

【全新课程】正点原子《基于GD32 ARM32单片机项目实战入门》培训课程上线!

正点原子《ESP32物联网项目实战》全新培训课程上线啦!正点原子工程师手把手教你学!彻底解决ARM32单片机项目入门难的问题! 一、课程介绍 本课程专为ARM32单片机的入门学习者设计,涵盖了环境搭建、编程软件使用、模块基础驱动和多…

矩阵的逆怎么算?逆矩阵公式来了(附逆矩阵计算器)

大家好,这里是效率办公指南! 📚 在线性代数中,逆矩阵是一个非常重要的概念。一个方阵如果存在逆矩阵,意味着该矩阵是可逆的,或者说是非奇异的。逆矩阵在解决线性方程组、计算矩阵的方根等方面有着广泛的应…

利用Accelerate()进行pytorch的多GPU加速

简介 官方Github:https://github.com/huggingface/accelerate Accelerate 是为喜欢编写PyTorch模型的训练循环但不愿意编写和维护使用多GPU/TPU/fp16所需的样板代码的PyTorch用户创建的。 它可以仅加速与多 GPU/TPU/fp16 相关的样板代码,并保持其余代…

Pyspark dataframe基本内置方法(5)

文章目录 Pyspark sql DataFrame相关文章toDF 设置新列名toJSON row对象转换json字符串toLocallterator 获取迭代器toPandas 转换python dataframetransform dataframe转换union unionALL 并集不去重(按列顺序)unionByName 并集不去重(按列名…

jenkins声明式流水线语法详解

最基本的语法包含 pipeline:所有有效的声明式流水线必须包含在一个 pipeline 块中stages:包含一系列一个或多个stage指令stage:stage包含在stages中进行,比如某个阶段steps:在阶段中具体得执行操作,一个或…

提升工作效率神器

这五款软件让你事半功倍 在当今快节奏的社会中,提高工作效率成为了每个人追求的目标。而在这个数字化时代,选择对的软件工具无疑是提高效率的关键。今天,我为大家推荐五款优秀的工作效率软件,帮助你在工作中事半功倍。 1、亿可达…

15个 Jenkins 面试题

Jenkins 已成为持续集成和持续部署 (CI/CD) 流程中使用最广泛的自动化服务器之一。凭借其强大的功能和广泛的插件生态系统,Jenkins 已成为全球软件开发团队的首选工具。如果您正在准备 Jenkins 面试,那么精通其概念、架构和最佳实践至关重要。 为了帮助…

1.3 MySql的用户管理

一、下载Mysql客户端 下载navicat:Navicat 中国 | 支持 MySQL、Redis、MariaDB、MongoDB、SQL Server、SQLite、Oracle 和 PostgreSQL 的数据库管理 二、安装Navicat 三、创建数据库 创建一个数据库的连接吧,因为这个界面儿是图形界面儿,所以我们创建…

深入分析MySQL事务日志-Redo Log日志

文章目录 事务日志-Redo Log2.1 Redo Log2.1.1 Redo Log与持久性2.1.2 Redo Log的工作原理2.1.3 Redo Log的落盘策略2.1.4 Redo Log的系统参数 事务日志-Redo Log 事务的隔离性是通过锁实现,而事务的原子性、和持久性则是通过事务日志实现。在MySQL中,事…

【吉林大学编译原理题库】正则表达式的书写

1. 2. 选A 3. 没啥好说的,按意思写就行: 4. 5.设字母表S{0,1},写正则表达式表示所有偶数个0和偶数个1组成的字符串。 6. 设字母表S{0,1},写正则表达式表示所有偶数个0和奇数个1组成的字符串。(提示&am…

Token usage of Content Filtered messages in Azure OpenAI Services

题意:在Azure OpenAI服务中,内容过滤消息的令牌使用 问题背景: When sending a message to a chat via GetChatCompletions as a response, I get a RequestFailedException. In the exception, I get an answer for which category content…

2-101基于matlab的频带方差端点检测

基于matlab的频带方差端点检测,噪声频谱中,各频带之间变化很平缓,语音各频带之间变化较激烈。据此特征,语音和噪声就极易区分。计算短时频带方差,实质就是计算某一帧信号的各频带能量之间的方差。这种以短时频带方差作…

揭秘MySQL主从复制:打造高可用性与数据冗余的强效引擎

作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注 座右铭: 云端筑梦,数据为翼,探索无限可能,引领云计算新纪元 个人主页:团儿.-CSDN博客 目录 前言&#…

从Web2到Web3:探索下一代互联网的无限可能性

互联网经历了从Web1到Web2的重大变革,现在正迈向Web3。Web2通过社交媒体、电子商务和内容平台改变了我们的数字生活,但同时也伴随着中心化平台的垄断和用户数据被广泛控制的问题。而Web3的出现,则试图通过去中心化技术解决这些挑战&#xff0…

人到中年,最清醒的活法—沉浸式做自己

生活中,你是不是常常被这样的事情所困扰? 工作的时候,每天被千头万绪的杂事缠身,看着一堆待完成事项,和工作群里一堆的消息在轰炸你,内心顿感烦躁甚至暴怒。 经常因为领导,同事或者熟人甚至陌生…

java 洛谷题单【算法1-7】搜索

P1219 [USACO1.5] 八皇后 Checker Challenge 解题思路 回溯法 递归与回溯: 从第0行开始,为每个行尝试放置棋子的位置,检查放置是否违反约束条件。如果放置合法,则继续递归处理下一行(即下一层递归)。如果当前行无法找…

【Go语言】深入解读Go语言中的指针,助你拨开迷雾见月明

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

浅谈提示工程之In-context learning技术

提示工程之In-context learning技术; 通过一张图片围绕下边几个方面进行简单说明 概念起因本质结构注意事项 日常总结

SQL语法学习与实战应用

第一章 引言 1.1 MySQL数据库概述 MySQL,作为一种广泛使用的关系型数据库管理系统,自其问世以来,便凭借开源、高性能及低成本等显著特点,迅速占据了广泛的市场份额。这一系统不仅支持大规模并发访问,更提供了多样化的…