爬虫逆向学习(七):补环境动态生成某数四代后缀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.xdnf.cn/news/149377.html

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

相关文章

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

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

如何从格式化的笔记本电脑或台式机中恢复照片

您想学习如何从已格式化的笔记本电脑或台式机中恢复已删除的照片吗?这篇文章解释了如何使用最佳格式的照片恢复软件来做到这一点。您可以通过简单的步骤格式化计算机后恢复已删除的图像。 将照片保存在笔记本电脑或 PC 硬盘上是很常见的。与相机存储卡和 USB 闪存驱…

代码随想录Day16 单调栈

739. 每日温度 该题的题意很简单 要求遍历温度数组 找出几天后会出现下一次更高的温度 这就可以用到单调栈的知识 通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了 那么我们该如何实现…

Leetcode 65. 有效数字

1.题目基本信息 1.1.题目描述 给定一个字符串 s ,返回 s 是否是一个 有效数字。 例如,下面的都是有效数字:”2″, “0089”, “-0.1”, “3.14”, “4.”, “-.9”, “2e10”, “-90E3”, “3e7”, “6e-1”, “53.5e93”, “-123.456e789…

单链表:学生信息管理系统

一、头文件 #ifndef __LINK_H__ #define __LINK_H__ #include <myhead.h> #define MAX 30 // 建立学生结构体 typedef struct student {int id; //学号char name[20]; //姓名float score; //分数 }stu;typedef struct node {union{int len;stu data;};struct node * nex…

(Arxiv-2024)DiffLoRA:通过扩散生成个性化低秩自适应权重

DiffLoRA&#xff1a;通过扩散生成个性化低秩自适应权重 paper title&#xff1a;DiffLoRA: Generating Personalized Low-Rank Adaptation Weights with Diffusion paper是电子科技大学发表在arxiv 2024的工作 paper地址 Abstract 个性化文本转图像生成因其能够根据用户定义的…

【python】requests 库 源码解读、参数解读

文章目录 一、基础知识二、Requests库详解2.1 requests 库源码简要解读2.2 参数解读2.3 处理响应2.4 错误处理 一、基础知识 以前写过2篇文章&#xff1a; 计算机网络基础&#xff1a; 【socket】从计算机网络基础到socket编程——Windows && Linux C语言 Python实现…

环形缓冲区例子

即使使用中断函数或者定时器函数记录按键&#xff0c;如果只能记录一个键值的话&#xff0c;如果不能 及时读走出来&#xff0c;再次发生中断时新值就会覆盖旧值。要解决数据被覆盖的问题&#xff0c;可以使用 一个稍微大点的缓冲区&#xff0c;这就涉及数据的写入、读出&#…

MyBatis - 动态SQL

前言 我们在某网站填写个人信息时&#xff0c;时常会遇到可以选填的空&#xff08;即可填&#xff0c;可不填&#xff09;&#xff0c;由于之前讲过的Java中的SQL语句都是固定的&#xff0c;且我们不可能对所有情况都写出与之对应的插入语句&#xff08;太过繁琐&#xff09;&…

【LLM多模态】Animatediff文生视频大模型

note AnimateDiff框架&#xff1a;核心是一个可插拔的运动模块&#xff0c;它可以从真实世界视频中学习通用的运动先验&#xff0c;并与任何基于相同基础T2I的个性化模型集成&#xff0c;以生成动画。训练策略&#xff1a;AnimateDiff的训练包括三个阶段&#xff1a; 领域适配…

56 mysql 用户权限相关的实现

前言 这里讨论 mysql 的权限相关处理 使用如下语句创建 tz_test 用户, 并赋予他 test_02 数据库的查询权限 create user tz_test% identified by tz_test; grant select on test_02.* to tz_test%; 查询目标数据表, 数据如下, tz_test_02 UPDATE command denied to user …

前端——表单和输入

今天我们来学习web前端中的表单和输入 表单 HTML 表单用于收集用户的输入信息&#xff0c;用表单标签来完成服务器的一次交互。 HTML 表单表示文档中的一个区域&#xff0c;此区域包含交互控件&#xff0c;将用户收集到的信息发送到 Web 服务器。 HTML 表单通常包含各种输入…

Apache Dolphinscheduler:一个开源的分布式工作流调度系统

一个开源的分布式工作流调度系统 Apache Dolphinscheduler概述安装 单机部署准备工作启动DolphinScheduler登录DolphinScheduler启停服务命令配置数据库初始化数据库 DolphinScheduler集群模式准备工作修改install_env.sh文件修改dolphinscheduler_env.sh文件初始化数据库部署访…

【Python】数据可视化之分布图

分布图主要用来展示某些现象或数据在地理空间、时间或其他维度上的分布情况。它可以清晰地反映出数据的空间位置、数量、密度等特征&#xff0c;帮助人们更好地理解数据的内在规律和相互关系。 目录 单变量分布 变量关系组图 双变量关系 核密度估计 山脊分布图 单变量分布…

谷歌网站收录查询,怎么查看网站在谷歌的收录情况

在进行谷歌网站收录查询时&#xff0c;我们需采取一种既专业又系统的方法&#xff0c;以确保能够准确评估网站在谷歌搜索引擎中的可见性和收录状态。这一过程不仅关乎技术细节&#xff0c;还涉及到对搜索引擎优化&#xff08;SEO&#xff09;策略的理解与应用。以下是一个基于专…

MobaXterm基本使用 -- 服务器状态、批量操作、显示/切换中文字体、修复zsh按键失灵

监控服务器资源 参考网址&#xff1a;https://www.cnblogs.com/144823836yj/p/12126314.html 显示效果 MobaXterm提供有这项功能&#xff0c;在会话窗口底部&#xff0c;显示服务器资源使用情况 如内存、CPU、网速、磁盘使用等&#xff1a; &#xff08;完整窗口&#xff0…

QT| “无法粘贴窗口部件”错误以及customplot

“无法粘贴窗口部件”错误以及customplot “无法粘贴窗口部件”错误customplot下载添加到项目中使用QCustomPlot常用的代码 “无法粘贴窗口部件”错误 情景&#xff1a;使用QT设计界面&#xff0c;很多部分比较类似&#xff0c;可以复制另一个界面的ui&#xff0c;但是粘粘的时…

力扣 中等 1901.寻找峰值II

文章目录 题目介绍题解 题目介绍 题解 需要明白一个事实&#xff1a;从任意一个点出发&#xff0c;可以经过一个递增路径&#xff0c;找到一个极大值点。 求出一行的最大值&#xff0c;如果这行最大值比上面的要小&#xff0c;那峰值&#xff08;之一&#xff09;就会在上面 …

React-Native 中使用 react-native-image-crop-picker 在华为手机上不能正常使用拍照功能

背景: React-Native 0.66 中使用 react-native-image-crop-picker 在安卓 华为手机上不能正常使用拍照功能, 其他品牌正常 代码如下: import ImagePicker from react-native-image-crop-picker;ImagePicker.openCamera(photoOptions).then(image > {callback(image);}) …

如何释放并重新获得ip地址呢?

如何释放并重新获得ip地址呢&#xff1f; 释放并重新获得一个IP地址的具体步骤如下&#xff1a; 1、要想从DHCP服务器重新获取ip&#xff0c;电脑必须设置成"自动获取ip",设置如下&#xff0c;在电脑桌面"网络"-属性-更改适配器设置为自动获取ip。 2、然…