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

45、WEB攻防——通用漏洞PHP反序列化POP链构造魔术方法原生类

文章目录

  • 序列化:将java、php等代码中的对象转化为数组或字符串等格式。代表函数serialize(),将一个对象转换成一个字符;
  • 反序列化:将数组或字符串等格式还成对象。代表函数unserialize(),将字符串还原成一个对象。
    在这里插入图片描述

PHP反序列化漏洞原理:未对用户输入的序列化字符串进行检测,在反序列化过程中自动触发某些魔术方法,从而导致反序列化漏洞的产生。关键在于魔术方法自动被触发

触发unserialize函数的变量可控,文件中存在可利用的类,类中有魔术方法(不仅仅这些):

__construct() //构造函数,当对象new的时候自动调用
__destruct() //构造函数,当对象被销毁时被自动调用
__wakeup() //unserialize()时会被自动调用
__invoke() //当尝试以调用函数的方法调用一个对象时,会被自动调用
__call() //在对象上下文调用不可访问的方法时触发
__callStatci() //在静态上下文调用不可访问的方法时触发
__get() //用于从不可访问的属性读取数据
__set() //用于将数据写入不可访问的属性
  • 函数名前面有__的就是魔术方法,如__construct()
  • 在代码中,new会创建一个对象,这时候自动调用__construct();代码执行结束,会自动销毁对象,此时会自动调用__destruct()

将一个类demotest进行序列化后得到的序列化数据和发序列话数据如下:
在这里插入图片描述

在这里插入图片描述
尽管在原对象中cmd变量的值是ipconfig,但是在GET传输过程中,可以修改cmd的值,最终得到自己想要的结果。
在这里插入图片描述
在这里插入图片描述

黑盒中基本上探测不到反序列化漏洞~

生成POP链什么意思?其实就是构造能够满足unserialize后面代码的类,然后使用serialize生成序列化数据传输到目标中。

反序列化利用大概分为三类:

  • 魔术方法的调用逻辑-如触发条件
  • 语言原生类的调用逻辑-如SoapClient。原生类就是PHP自带的类。
  • 语言自身的安全缺陷-如CVE-2016-7124

入门教学 | Typecho反序列化漏洞分析
PHP原生类的反序列化利用

相关文章:

45、WEB攻防——通用漏洞PHP反序列化POP链构造魔术方法原生类

文章目录 序列化:将java、php等代码中的对象转化为数组或字符串等格式。代表函数serialize(),将一个对象转换成一个字符;反序列化:将数组或字符串等格式还成对象。代表函数unserialize(),将字符串还原成一个对象。 P…...

雾锁王国服务器怎么建?雾锁王国服务器搭建方法

雾锁王国Enshrouded服务器搭建怎么搭建?非常简单,阿里云计算巢雾锁王国程序,可以一键搭建雾锁王国多人联机服务器,腾讯云是基于雾锁王国镜像系统,阿里云服务网aliyunfuwuqi.com汇总雾锁王国服务器搭建,超简…...

设计模式篇---观察者模式

文章目录 概念结构实例总结 概念 观察者模式:定义对象之间的一种一对多的依赖关系,使得每当一个对象状态发生改变时,其他相关依赖对象都得到通知并被自动更新。 观察者模式是使用频率较高的一个模式,它建立了对象与对象之间的依赖…...

Docker常用命令Top20

Docker常用命令Top20 Docker是一种容器化平台&#xff0c;通过使用Docker&#xff0c;开发人员可以轻松地打包、交付和运行应用程序。以下是Docker中最常用的20个命令&#xff1a; docker run&#xff1a; 运行一个容器。 docker run <image_name>docker ps&#xff1a;…...

Redis的发布订阅机制及其使用场景

Redis的发布订阅&#xff08;Pub/Sub&#xff09;机制是一种消息通信模式&#xff0c;其中发送者&#xff08;发布者&#xff09;将消息发送到特定的频道&#xff0c;而订阅者则订阅其中一个或多个频道&#xff0c;以接收感兴趣的消息。这种模式可以用于构建实时通信系统、消息…...

计算机网络的基础知识

网络的性能指标&#xff1a;网络速率&#xff0c;bpsbit/s&#xff1b; 时延包括四个组成部分&#xff1a;发送时延、传播时延、排队时延、处理时延&#xff1b; 网络各个层次结构设计的基本三原则&#xff1a;各个层次之间是相互独立的&#xff0c;每一个层之间有足够的灵活…...

QT-Http post 同步请求

在 Qt 中&#xff0c;你可以使用 QNetworkAccessManager 对象的 sendCustomRequest 方法来发送同步的 HTTP 请求。以下是一个演示如何使用该方法发送同步 HTTP POST 请求的示例代码&#xff1a; #include <QCoreApplication> #include <QNetworkAccessManager> #i…...

【JVM】StringTable 字符串常量池

参考&#xff1a;javaGuide 字符串常量池 是 JVM 为了提升性能和减少内存消耗针对字符串&#xff08;String 类&#xff09;专门开辟的一块区域&#xff0c;主要目的是为了避免字符串的重复创建 String的不可变性 1.通过字面量的方式&#xff08;区别于new&#xff09;给一个…...

Unity中URP实现水体(水的焦散)

文章目录 前言一、原理1、 通过深度图&#xff0c;得到 对应像素 在 世界空间下的Z值2、得到模型顶点在 观察空间 下的坐标3、由以上两点得到 深度图像素 对应的 xyz 值4、最后&#xff0c;转化到 模型本地空间下&#xff0c;用其对焦散纹理采样 二、实现1、获取深度图2、在顶点…...

vue构建版本

完整版&#xff1a;同时包含编译器和运行时的版本。 编译器&#xff1a;用来将模板字符串编译成为 JavaScript 渲染函数的代码。 运行时runtime&#xff1a;用来创建 Vue 实例、渲染并处理虚拟 DOM 等的代码。基本上就是除去编译器的其它一切。 UMD&#xff1a;UMD 版本可以…...

Docker挂载镜像到本地(日常记录)

Docker挂载镜像到本地 1、进入jar包文件夹 cd docker-publish/2、编写DockFile文件 #使用Jdk8环境作为基础镜像&#xff0c;如果镜像不在本地则会从DockerHub进行下载 #FROM openjdk:8-jdk-alpine FROM openjdk:11 #VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/l…...

【Elasticsearch查询】精确查询

文章目录 复合查询constant_score querybool querydis_max queryfunction_score queryboosting query单层嵌套双层嵌套 词项查询term query&#xff08;词项查询&#xff09;数字的精确查询文本的精确查询查询优化 terms query&#xff08;多词项查询&#xff09;terms_set que…...

小狐狸chat2.7.2免授权修复版可用版

小狐狸chat2.7.2免授权修复版可用版 在网络上面找了好几个版本不能使用&#xff0c;今天发布这个仔细测试正常使用 主要功能&#xff1a;独立版无限多开支持分销会员充值自己APP打包小程序万能创作MJ绘图多个国内接口 国外很火的ChatGPT&#xff0c;这是一种基于人工智能技术…...

通过QScrollArea寻找最后一个弹簧并且设置弹簧大小

项目原因&#xff0c;最近需要通过QScrollArea寻找其中最后一个弹簧并且设置大小和策略&#xff0c;因为无法直接调用UI指针&#xff0c;所以只能用代码寻找。 直接上代码&#xff1a; if (m_scrollArea){int iScrollWidth m_labelSelectedTitle->width();m_scrollArea-&g…...

為什麼使用海外動態代理IP進行網路爬蟲?

網路爬蟲作為獲取網路數據的重要工具&#xff0c;其重要性不言而喻。但隨著網站反爬策略的日益嚴格&#xff0c;爬蟲任務變得愈發困難&#xff0c;不過海外動態代理IP可以很好地解決這一問題。本文將詳細闡釋動態代理IP在爬蟲中的應用&#xff0c;以及如何使用動態代理IP提升爬…...

LeetCode 热题100 刷题笔记

一&#xff1a;哈希表 一般哈希表都是用来快速判断一个元素是否出现集合里。 直白来讲其实数组就是一张哈希表&#xff0c;哈希表中关键码就是数组的索引下标&#xff0c;然后通过下标直接访问数组中的元素。 1.两数之和 题目链接&#xff1a;. - 力扣&#xff08;LeetCode…...

veridata安装

GoldenGate Veridata是GoldenGate中用于比较数据库间数据同步效果的一个对比软件。Veridata基于Web&#xff0c;支持大据量的数据对比&#xff0c;能够在不停止数据同步的情况下就可以比较数据。 1、安装veridata前我们都会先安装 middleware infrastructure 这时我们会添加几个…...

面试笔记系列三之spring基础知识点整理及常见面试题

目录 如何实现一个IOC容器? 说说你对Spring 的理解&#xff1f; 你觉得Spring的核心是什么&#xff1f; 说一下使用spring的优势&#xff1f; Spring是如何简化开发的&#xff1f; IOC 运行时序 prepareRefresh() 初始化上下文环境 obtainFreshBeanFactory() 创建并…...

面试笔记系列四之SpringBoot+SpringCloud+计算机网络基础知识点整理及常见面试题

目录 Spring Boot 什么是 Spring Boot&#xff1f; Spring Boot 有哪些优点&#xff1f; SpringBootApplication注解 Spring Boot 的启动流程 Spring Boot属性加载顺序 springboot自动配置原理是什么&#xff1f;&#xff08;*&#xff09; 如何理解springboot中的start…...

Kernel[Device Tree] - 1. 设备树的由来

内核代码中&#xff0c;arch文件夹下&#xff0c;是各个架构相关的代码&#xff0c;arm也在里面。 arm子文件夹下&#xff0c;有mach-xxx的目录&#xff0c;就是针对各个芯片类型的&#xff0c;比如mach-imx就是imx系列的芯片。 再里面就是具体的芯片或SOC&#xff0c;比如ma…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践

在 Kubernetes 集群中&#xff0c;如何在保障应用高可用的同时有效地管理资源&#xff0c;一直是运维人员和开发者关注的重点。随着微服务架构的普及&#xff0c;集群内各个服务的负载波动日趋明显&#xff0c;传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...

【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)

旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据&#xff01;该数据集源自2025年4月发表于《地理学报》的论文成果…...

数据库正常,但后端收不到数据原因及解决

从代码和日志来看&#xff0c;后端SQL查询确实返回了数据&#xff0c;但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离&#xff0c;并且ai辅助开发的时候&#xff0c;很容易出现前后端变量名不一致情况&#xff0c;还不报错&#xff0c;只是单…...

简单介绍C++中 string与wstring

在C中&#xff0c;string和wstring是两种用于处理不同字符编码的字符串类型&#xff0c;分别基于char和wchar_t字符类型。以下是它们的详细说明和对比&#xff1a; 1. 基础定义 string 类型&#xff1a;std::string 字符类型&#xff1a;char&#xff08;通常为8位&#xff09…...

Java中HashMap底层原理深度解析:从数据结构到红黑树优化

一、HashMap概述与核心特性 HashMap作为Java集合框架中最常用的数据结构之一&#xff0c;是基于哈希表的Map接口非同步实现。它允许使用null键和null值&#xff08;但只能有一个null键&#xff09;&#xff0c;并且不保证映射顺序的恒久不变。与Hashtable相比&#xff0c;Hash…...