瑞数4.0某房地产_瑞数补环境

news2025/1/13 10:46:54

文章目录

  • 前言
  • 目标网站
  • 瑞数简介
  • 整体流程
    • 1.找到cookie的生成位置
    • 2.网站分析
    • 逆向流程分析
    • 补环境
  • 结果
  • 结语

前言

本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!此外出于某种原因。本章大部分调试会省略,仅简单说个大概

目标网站

aHR0cDovL3d3dy5mYW5nZGkuY29tLmNuL25ld19ob3VzZS9uZXdfaG91c2VfZGV0YWlsLmh0bWw=

瑞数简介

在这里插入图片描述
瑞数动态安全 Botgate(机器人防火墙)以“动态安全”技术为核心,通过动态封装、动态验证、动态混淆、动态令牌等技术对服务器网页底层代码持续动态变换,增加服务器行为的“不可预测性”,实现了从用户端到服务器端的全方位“主动防护”,为各类 Web、HTML5 提供强大的安全保护。瑞数 Botgate 多用于政企、金融、运营商行业,一度被视为反爬天花板.目前版本有4.0,5.0,6.0,本章针对4.0,其本质上大差不差,无非是这几个流程(从上至下)
过瑞数的方法基本上有以下几种:自动化工具(要隐藏特征值)、RPC 远程调用、JS 逆向(硬扣代码和补环境),本文介绍的是 JS 逆向硬扣代码,尽可能多的介绍各种细节。
1、 一个meta标签,其content内容很长且是动态的(每次请求会变化),会在eval执行第二层JS代码时使用到;

2、 一个外链js文件,一般同一页面中其内容是固定的,下面的自执行函数会解密文件内容生成eval执行时需要的JS源码,也就是第二层vm代码;

3、一个大自执行函数(每次请求首页都会动态变化),主要是解密外链JS内容,给window添加一些属性如$_ts,会在vm中使用;

4、 生成80T这个cookie再带上第一次请求返回的80S,注意:4.0有一个生成假cookie的过程,扣代码的话要注意真假cookie,如果是补环境的话可以不用管,直接调用最后生成的document.cookie即可.

整体流程

1.找到cookie的生成位置

可以hook cookie的生成位置,油猴,fiddler,浏览器插件都行

(function() {
    'use strict';
    var cookieTemp = '';
  Object.defineProperty(document, 'cookie', {
    set: function (val) {
      debugger;
      console.log('Hook捕获到cookie设置->', val);
      cookieTemp = val;
      return val;
    },
    get: function () {
      return cookieTemp;
    },
  })
})();

2.网站分析

第一次 发起的请求 如下图
在这里插入图片描述
在这里插入图片描述
可见首先这是个 202 请求,其次他自返回了一个cookie: FSSBBIl1UgzbN7N80S。
在这里插入图片描述

并且的话还生成了一个 js c.FxJzG50F.dfe1675.js。

第二次 new_house_detail.html
在这里插入图片描述
第二次需要携带第一次的请求 已经一个新的 cookie 才能返回正常的页面。如下图

在这里插入图片描述

逆向流程分析

其实 我觉得补环境和正常分析区别很大。

我们不需要了解瑞数中的真假 cookie。

只需要定义出一个函数,去接受和返回 docuement.cookie即可。

在正式分析以前。我们需要固定一份静态代码。因为瑞数的网站返回的内容每次都是动态的,不方便我们调试。后续我们把这份静态代码放到 node 里就能慢慢的去补了。
在这里插入图片描述
这里补环境的话需要四部分内容,如上图 红圈中圈中的三个。以及生成的虚拟机代码。这四部分代码可以生成FSSBBIl1UgzbN7N80T

这里简单说明一下他们的作用

  • meta 标签中的内容:(即 content 中的内容)会在后续的 eval 中用得到
  • 外链的 js :c.FxJzG50F.dfe1675.js这部分代码。下面的那个自执行函数会解密这个 js 从而生成虚拟机代码
  • 自执行函数:解密外链 js。生成虚拟机代码。并且添加属性
  • 生成的虚拟机代码。生成新的 cookie

我们需要把这三段代码,放到一个文件中

(生成的虚拟机文件不需要,他会自己生成的。)

补环境

在此之前。我们看看正常页面返回给我们的 cookie 是啥样的。并且观察下长度是如何
在这里插入图片描述
我们在我们的代码头部增加两行代码,

document.getElementsByTagName = ...

在这里插入图片描述
发现上图成功生成了 cookie。但是好像长度怎么多了 22 位。这是怎么回事呢?

这里我猜测可能和网站的某些环境参数对应不上。因为我是用自定义页面打开且调试的。

自定义调试代码如下图所示
在这里插入图片描述
补环境的代码结构大概是这样的.如下图所示。
在这里插入图片描述
我们直接右击运行这个JS
在这里插入图片描述
发现报了个 window is not defined 补上

window = gloabl;

然后继续运行

如下图所示 发现又报错了,好像是缺少了 location
在这里插入图片描述

那我们补上 location = {}(最好 copy 网站上的 location 全一些)

然后继续运行
然后发现还是如上图 一样 报了没有location 这是怎么回事呢?

在这里插入图片描述

不要慌,此时我们挂上 proxy 代理来看看究竟是哪个对象上面没有location这个属性。
在这里插入图片描述

挂上代理对象。发现一切都好像明亮了起来。我们把这些对象都补上环境。顺便把 document 也挂上代理。

window = global;
window.top = window;
document = {};

继续运行
在这里插入图片描述
继续伪造
别问怎么去伪造,直接去原网站对比就行了。

在这里插入图片描述
在这里插入图片描述

document.createElement = function (val){if(val==='div'){return div} if(val==='form'){return {}} if(val==='a'){return {}}}

然后就很简单了。缺啥补啥。这里因为篇幅问题这里就不一一详解了。然后补全到这个地方 还会有个报错。报一个东西未定义。如下图

在这里插入图片描述
这里可以看到 报错内容是 _$x[$46[441]] is not a function

具体原因是因为addEventListener和attachEvent没有被定义。

所以我们简单补全一下。这里重点关注一个值 addEventListener、这个也是要补在 window 环境中的。这个方法的作用就是添加事件监听器。重写 very very 重要。但是在本章中不需要。只需要补全伪装成普通的函数即可
然后运行
在这里插入图片描述

然后发现 就成功了。并且长度也是 217。

对了,网站上还有个定时器,导致程序不会退出,且会报错。我们还需要把 setInterva这个方法给置空。

setInterval= function(){};

结果

我们放到 python 代码中运行。记得要替换掉动态代码。然后去运行。结果如下

结语

  • 写这篇文章的目的是为了记录一下自己的逆向之旅,后面会持续更新5.0,6.0等等
  • 出于安全考虑,本章未提供完整流程,调试环节省略较多,只提供大致思路,具体细节要你自己还原,相信你也能调试出来.

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

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

相关文章

Electron-builder打包安装包——编译篇

突然有一天想打包个桌面程序,没有打包过,经过九牛二虎之力终于打包出来,在此感谢那些热于分享的前辈! 本篇只讲打包运行和出现的问题 一、准备工作:提前下载相关资源包,否则在国内环境下可能因为网络问题…

POS 之 验证者队列

前文回顾 ETH网络的权益证明 什么是验证者队列 以太坊的进入和退出队列是等待开始质押或取消质押的验证者。网络对每个 epoch 可以处理的验证器数量有速率限制(称为 Churn(流失))。如果尝试进入或退出的验证器数量超过了可处理的数量,那么它…

HTTPS如何保证数据传输的安全性 以及CA签发证书验签

暴力输出: 越看会越深入,睡前难以想通,后深入研究。得之。 有问题 请留言。 ----------追求内心的富足与平和。日行一善。 亓苏姑娘

学习计算天数

学习计算天数 题目描述:解法思路:解法代码:运行结果: 题目描述: 输入y和m两个整数,y表示年份,m表示月份,计算y年m月有多少天,并输出天数。 测试1: 输⼊&…

字节跳动热门的前端开源项目

字节跳动开源官网 Arco Dsign Arco Design 是一套设计系统,主要服务于字节跳动旗下中后台产品的体验设计和技术实现。它的目标在于帮助设计师与开发者解放双手、提升工作效率,并高质量地打造符合业务规范的中后台应用。它拥有系统的设计规范和资源&…

Ubantu 18.04 如何映射IP到公网,外网可以访问

介绍一种简单的方式,就是通过路由侠 inux 系统安装路由侠,可通过两种方式进行,一种是通过直接脚本安装,一种是通过 Docker 安装。 windows下载地址:路由侠-局域网变公网 方式一:通过脚本安装 1、获取安…

2024金三银四必看前端面试题!简答版精品!

文章目录 导文面试题 导文 2024金三银四必看前端面试题!2w字精品!简答版 金三银四黄金期来了 想要跳槽的小伙伴快来看啊 面试题 基于您给出的方向,我将为您生成20个面试题和答案。请注意,由于面试题的答案可能因个人经验和理解而…

一文全懂,Android面试送分题

第一面 面试官看起来很年轻,感觉是一个刚毕业不久的小伙汁,声音很青涩哈哈哈哈 开始面试的时候把我给问懵了,当时刚午觉睡醒,还没缓过神 计算机网络部分: 1.http的一套流程是什么? 2.https发起连接的流程…

电网数字孪生系统的技术难点

电网数字孪生系统的开发和实现面临一些技术难点,解决这些技术难点需要综合运用各种先进的技术手段和方法,包括人工智能、大数据分析、云计算、物联网等,同时需要进行持续的研发和创新。北京木奇移动技术有限公司,专业的软件外包开…

【设计模式】(二)设计模式六大设计原则

一、 设计原则概述 设计模式中主要有六大设计原则,简称为SOLID ,是由于各个原则的首字母简称合并的来(两个L算一个,solid 稳定的),六大设计原则分别如下: ​ 1、单一职责原则(Single Responsibitity Principle&#…

Java继承与多态:深入理解继承、组合和多态的精髓!

Java继承与多态:深入理解继承、组合和多态的精髓! 引言 欢迎来到这篇关于Java继承与多态的博客!在Java编程中,继承与多态是两个非常重要的概念,它们为我们构建灵活而高效的代码提供了强大的支持。本文将深入探讨Java继…

C语言经典算法-1

C语言经典算法讲解练习 文章目录 C语言经典算法讲解练习1.汉若塔2.费式数列3. 巴斯卡三角形4.三色棋5.老鼠走迷官(一)6.老鼠走迷官(二)7.骑士走棋盘8.八皇后9.八枚银币10.生命游戏 1.汉若塔 说明:河内之塔(Towers of …

桥梁安全监测方案:多维度的技术与设备应用

一、背景与意义 随着交通基础设施的快速发展,桥梁作为连接两岸的关键纽带,其安全性能直接关系到人们的生命财产安全和交通畅通。为确保桥梁的安全与稳定,及时发现潜在的安全隐患,采取科学、有效的安全监测方案显得尤为重要。本文将…

Python网络请求高级篇:Requests库的深度运用

在Python网络请求中级篇中,我们了解了如何通过Requests库发送带参数的请求,处理Cookies,使用Session对象,以及设置请求头。在本文中,我们将进一步深入学习Requests库的高级功能,包括处理重定向,…

C#不可识别的数据库格式解决方法

1.检查数据库文件路径和文件名: 确保指定的路径和文件名拼写正确,而且文件确实存在于指定的位置。使用绝对路径或相对路径都是可行的,但要确保路径的正确性 string connectionString "ProviderMicrosoft.ACE.OLEDB.12.0;Data SourceE:…

基于SSM+JSP的零食交易系统

运行截图 获取方式 Gitee仓库

【yolov8部署实战】VS2019+OpenCV环境部署yolov8目标检测模型|含详细注释源码

一、前言 之前一阵子一直在做的就是怎么把yolo项目部署成c项目,因为项目需要嵌套进yolo模型跑算法。因为自己也是本科生小白一枚,基本上对这方面没有涉猎过,自己一个人从网上到处搜寻资料,写代码,调试,期间…

NOIP2002提高组T2:字符串变换

题目链接 字符串变换 题目描述 已知有两个字串 A , B A,B A,B,及一组字串变换的规则(至多 6 6 6个规则): A 1 → B 1 A_1→B_1 A1​→B1​ A 2 → B 2 A_2→B_2 A2​→B2​ … 规则的含义为:在 A A A中的子串 A 1 A_1 A1​…

2024关于idea激活码报This license xxxx has been suspended

HOSTS文件中增加 0.0.0.0 www.jetbrains.com 0.0.0.0 account.jetbrains.com 然后

App原生开发:iOS和Android平台的比较(看这一篇就够了)

引言 移动应用的发展在过去几年里取得了巨大的突破,而原生开发作为构建高性能、富有交互性的应用程序的首选方法,一直占据着重要的地位。在这篇文章中,我们将探讨原生开发在两个主流移动平台——iOS和Android上的关键概念和技术。 概念和重…