当前位置: 首页 > article >正文

JS逆向案例-ali231补环境 - 14

文章目录

    • 概要 记录一下补环境的分享
    • 整体架构流程
    • 技术细节
    • 小结

概要 记录一下补环境的分享

提示:仅供学习,不得用做商业交易,如有侵权请及时联系

逆向:ali系参数231的值

URL:aHR0cHM6Ly91cGF5LjEwMDEwLmNvbS91cGF5LXdhcC8/c2VydmljZVR5cGU9MDEmYnVzc1R5cGVJbj0mcGhvbmU9JmNoYW5uZWxLZXk9c3h3eCZqb2luU2lnbj0=

接口:aHR0cHM6Ly9jZi5hbGl5dW4uY29tL25vY2FwdGNoYS9hbmFseXplLmpzb25w

整体架构流程

提示:分析流程

一、找到加密位置:

在这里插入图片描述

	fyglobalopt = {
	    Enable: 3,
	    MTInterval: 4,
	    MaxFocusLog: 6,
	    MaxKSLog: 14,
	    MaxMTLog: 300,
	    MaxNGPLog: 200,
	    MinMTDwnLog: 30,
	    NGPInterval: 4,
	    location: "cn",
	    timeout: 2000,
	    _umopt_npfp:1
	}
	o.__fy_options = fyglobalopt;
	fyglobalopt.reqUrl = fyglobalopt;

单步进入我们发现,最终是在一个fireye.js的文件中生成的

在这里插入图片描述

二、分析初始化的环境值:将该文件全扣,补环境

在这里插入图片描述

我们看到,当初始化完成后,会出现一个数组W为127位,该数组可以确定你补环境是否与之一致,如果基本一致就说明补对了,后面当我们滑动滑块时,轨迹数组也会存在当中

三、下面说一下初始化时会有哪些检测 如果怕漏环境,最好是能挂代理的都挂上,能补原型的基本也补上

  1. window.hasOwnProperty 检测window中是否存在某些元素
  2. Object.hasOwnProperty / Object.prototype.hasOwnProperty 检测window下某个对象是否存在某些方法对象
  3. dom/bom检测 如创建标签,SCRIPT,style,canvas,span,div,audio,对标签对象进行一些操作,如appendChild、removeChild到,重点canvas、getContext、补充2d、webgl(getSupportedExtensions、getExtension、getParameter等)
  4. 检测方法的toString、Reflect.getOwnPropertyDescriptor(webdriver)
  5. getComputedStyle、performance.getEntriesByType等window的某些方法
  6. 其他 — 能够将初始化127补对了,后面补出值的环境,其实都大差不差
    注意ali140、227检测的时候:
    HTMLDocument.hasOwnProperty(‘getSelection’)是存在的
    HTMLDocument.prototype.getSelection = function (){}
    在这里插入图片描述

而ali231如果你补充了这个方法,那么:
[1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 1, 247, 15, 254, 230, 127]会变成
[1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 5, 247, 15, 254, 230, 127]

	B(54, fyglobalopt)

需要注意我们补环境时process.exit(0)这玩意带上,不然会处于宕机状态

说一下RTCPeerConnection 这玩意,可补空,如果需要补就这样

	RTCPeerConnection = class {
	}
	RTCPeerConnection.prototype.getLocalStreams = function () {
	
	}
	RTCPeerConnection.prototype.createDataChannel = function () {
	
	    return {
	        onopen: function () {
	        }, onclose: function () {
	        }, onmessage: function () {
	        }, send: function () {
	        }, close: function () {
	        },
	    }
	}
	RTCPeerConnection.prototype.createAnswer = function () {
	
	}
	RTCPeerConnection.prototype.createOffer = function () {
	    return new Promise((resolve, reject) => {
	        const offer = {
	            sdp: "v=0\r\no=- 7557661829766968651 2 IN IP4 {14.216.134.96}\r\ns=-\r\nt=0 0\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS\r\n",
	            type: "offer"
	        };
	        resolve(offer);
	    });
	}
	RTCPeerConnection.prototype.setLocalDescription = function (sampleDescription) {
	    return new Promise((resolve, reject) => {
	        resolve();
	    });
	}
	RTCPeerConnection.prototype.setConfiguration = function () {
	
	}
	RTCPeerConnection.prototype.addIceCandidate = function () {
	
	}
	RTCPeerConnection.prototype.addTrack = function () {
	
	}
	RTCPeerConnection.prototype.onicecandidate = function () {
	
	}
	RTCPeerConnection.prototype.localDescription = {
	    sdp: "v=0\r\no=- 7557661829766968651 2 IN IP4 {ip}\r\ns=-\r\nt=0 0\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS\r\n",
	    type: "offer"
	}
	RTCPeerConnection.prototype.sctp = {}
	webkitRTCPeerConnection = RTCPeerConnection;

四、说一下轨迹问题,轨迹的这里直接借鉴B站某博主的方法,因为该站轨迹校验不严,所以我们直接使用浏览器的轨迹

在这里插入图片描述
将W[8]、W[51]替换成浏览器的值!!!

五、最后直接看结果:

在这里插入图片描述
接口测试:
在这里插入图片描述

技术细节

也是补了一万年,2000多行

小结

提示:交流学习!!!


http://www.kler.cn/a/536578.html

相关文章:

  • 第二个Qt开发实例:在Qt中利用GPIO子系统和sysfs伪文件系统实现按钮(Push Button)点击控制GPIO口(效果为LED2灯的灭和亮)
  • 深度学习:解码智能的“数字炼金术”
  • oracle ORA-27054报错处理
  • vue3+ts 引入 json-editor-vue3
  • mybatis plus 持久化使用技巧及场景
  • langchain教程-3.OutputParser/输出解析
  • 日本游戏机市场5年来首次陷入萎缩;特斯拉招人推进人形机器人量产;任天堂专利显示Switch2手柄可用作鼠标...| 游戏智眼日报
  • AWS SMS短信通知实战:使用 Pinpoint SMS Voice V2 完整指南
  • MFC 应用最小化到系统托盘
  • NetCore Consul动态伸缩+Ocelot 网关 缓存 自定义缓存 + 限流、熔断、超时 等服务治理
  • 如何轻松将Matlab生成的图表嵌入PowerPoint演示文稿
  • 23、深入理解 Java Stream:高效处理数据的利器
  • 什么是高光谱成像相机?
  • .NET周刊【1月第3期 2025-01-19】
  • 网站改HTTPS方法
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-downloads.py
  • PHP云调查考试问卷系统小程序
  • C++开发(软件开发)常见面试题
  • 【QT】控件 -- 多元素类 | 容器类 | 布局类
  • 日志级别修改不慎引发的一场CPU灾难
  • Elasticsearch 高级技巧
  • 基于机器学习时序库pmdarima实现时序预测
  • 使用 `WITH` 子句优化复杂 SQL 查询
  • 6 maven工具的使用、maven项目中使用日志
  • RISC-V芯片与扩展医疗影像处理边缘设备编程探析
  • SQL Server 数据库迁移到 MySQL 的完整指南