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

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

前言

这篇文章主要是研究如何动态生成后缀参数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.mfbz.cn/a/882474.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++之初识STL(概念)

STL(标准模板库) STL广义分类为:容器,算法,迭代器 * **容器**和**算法**之间通过**迭代器**进行无缝连接 意义:C的**面向对象**和**泛型编程**思想,目的就是**复用性的提升** STL六大组件 1. 容…

论文阅读:Omni-Kernel Network for Image Restoration

论文地址:https://ojs.aaai.org/index.php/AAAI/article/view/27907 项目地址:https://github.com/c-yn/OKNet 发表时间:2024 图像恢复的目的是从一个退化的低质量的观测中重建一个高质量的图像。最近,Transformer模型由于其强大…

JavaScript 安装库npm报错

今天在编写JavaScript代码时,缺少了包express。 const express require(express); const app express();app.get(/, (req, res) > {res.send(Hello, world!); });app.listen(3000, () > {console.log(Server is running on port 3000); });npm install exp…

【Redis技能熟练掌握之十年内功】

Redis技能熟练掌握之十年内功 1.redis是什么?为什么要使用redis?2.redis一般应用于什么场景(四个场景)?3. Redis持久化机制是什么?各自的优缺点?一般咋么用?4. redis五个基础类型支持…

速通汇编(七)BX、SI、DI寄存器,BP寄存器,直接寻址和间接寻址

下文中出现的"idata",指的都是任意常量 一,基于BX、SI、DI等寄存器的寻址形式 在第五篇中曾介绍过DS寄存器的作用,简要复习一下->速通汇编(五)认识段地址与偏移地址,CS、IP寄存器和jmp指令&a…

百度飞浆Paddle OCR检测和识别【OCR数据收集、标注、数据集划分、检测识别模型训练、导出模型】

文章目录 前言一、OCR数据集采集二、OCR数据标注三、划分数据集四、数据训练五、导出模型 前言 1、我的电脑没有GPU,如果不使用AI Studio训练的话,第一遍我是按照CPU进行环境配置和训练的,可以参考这篇文章,我按着弄了一遍&#…

Kafka技术详解[1]:简介与基础概念

目录 1. Kafka入门 1.1 概述 1.1.1 初识Kafka 1.1.2 消息队列 1.1.3 生产者-消费者模式 1.1.4 消息中间件对比 1.1.5 ZooKeeper 1. Kafka入门 1.1 概述 1.1.1 初识Kafka Kafka是由Scala和Java语言开发的高吞吐量分布式消息发布和订阅系统,也是大数据技术领…

10月23-27日六西格玛绿带公开课即将在雄安新区开课

在金秋送爽、硕果累累的季节里,天行健管理咨询公司宣布了一项重要决定——定于10月23日至27日,在充满未来气息的河北雄安新区,举办一场旨在提升企业质量管理水平、培养精英人才的六西格玛绿带公开课。此次课程的举办,不仅是对当前…

Spring6梳理9—— 依赖注入之注入对象类型属性

目录 9.1 依赖注入之外部注入对象类型属性 9.1.1 创建dept与emp类 9.1.2 创建配置文件 9.1.3 创建测试类 9.1.4 运行结果 9.2 依赖注入之内部注入对象类型 9.3 依赖注入之级联注入对象类型 9.1 依赖注入之外部注入对象类型属性 9.1.1 创建dept与emp类 1.dept…

Python在AI中的应用--使用决策树进行文本分类

Python在AI中的应用--使用决策树进行文本分类 文本分类决策树什么是决策树 scikit算法 使用scikit的决策树进行文章分类一个文本分类的Python代码使用的scikit APIs说明装入数据集决策树算法类类构造器: 构造决策树分类器产生输出评估输出结果分类准确度分类文字评估…

达梦-华为鲲鹏ARM架构下性能测试最佳实践

一、测试综述 1.1 测试目的 本次测试的目的是验证达梦数据库,在鲲鹏服务器下,不同服务器参数基于sysbench性能压力测试的表现。本次参数是根据为华为鲲鹏arm服务器调优十板斧内建议值调整 成长地图-鲲鹏开发套件开发文档-鲲鹏社区 1.2 通用指标 指标…

跟着问题学12——GRU详解

1 GRU 1. 什么是GRU GRU(Gate Recurrent Unit)是循环神经网络(Recurrent Neural Network, RNN)的一种。和LSTM(Long-Short Term Memory)一样,也是为了解决长期记忆 和反向传播中的梯度等问题…

让AI激发创作力:OpenAI分享5位专业作家利用ChatGPT写作的案例技巧

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工…

【标准库的典型内容】std::declval

一、 d e c l v a l declval declval的基本概念和常规范例 s t d : : d e c l v a l std::declval std::declval 是 C 11 C11 C11标准中出现的一个函数模板。这个函数模板设计的比较奇怪(没有实现,只有声明),因此无法被调用&…

AlmaLinux 安裝JDK8

在 AlmaLinux 上安装 JDK 8 可以通过包管理器 dnf 来完成。AlmaLinux 是基于 RHEL 的一个开源发行版,因此其包管理系统和 RHEL 类似。以下是详细的步骤来安装 OpenJDK 8 1. 更新系统包列表 sudo dnf update -y 2. 安装 OpenJDK 8 使用 dnf 安装 OpenJDK 8。你可…

热斑黄斑光伏发电板 红外黄斑检测图像数据集内含最高温度信息 1200张,jpg格式。

热斑黄斑光伏发电板 红外黄斑检测图像数据集 内含最高温度信息 1200张,jpg格式。 热斑黄斑光伏发电板红外黄斑检测图像数据集介绍 数据集名称 热斑黄斑光伏发电板红外黄斑检测图像数据集(Hot Spot and Yellow Spot Detection in Photovoltaic Panels I…

手势手语识别数据集,YOLOv5目标检测两个数据集,图大量,模型精度高分别为近100类

手势手语识别数据集,YOLOv5目标检测 两个数据集,图大量,模型精度高分别为近100类 手势手语识别数据集(Sign Language Gesture Recognition Dataset) 数据集概述 该数据集专为手势手语识别设计,包含大量的…

[深度学习]Pytorch框架

1 深度学习简介 应用领域:语音交互、文本处理、计算机视觉、深度学习、人机交互、知识图谱、分析处理、问题求解2 发展历史 1956年人工智能元年2016年国内开始关注深度学习2017年出现Transformer框架2018年Bert和GPT出现2022年,chatGPT出现,进入AIGC发展阶段3 PyTorch框架简…

Vue3(二)计算属性Computed,监视属性watch,watchEffect,标签的ref属性,propos属性,生命周期,自定义hook

文章目录 一 、计算属性1. 简写2. 完整写法 二、监视watch1. 监视【ref】定义的【基本类型】数据2. 监视【ref】定义的【对象类型】数据3. 监视【reactive】定义的【对象类型】数据4. 监视【ref】或【reactive】定义的【对象类型】数据中的某个属性5. 监视多个数据总结 三、wat…

html+css(如何用css做出京东页面,静态版)

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>京东</title><link rel"stylesheet&q…