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原生类的反序列化利用

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法与数据结构】复杂度深度解析(超详解)

文章目录 📝算法效率🌠 算法的复杂度🌠 时间复杂度的概念🌉大O的渐进表示法。 🌠常见复杂度🌠常见时间复杂度计算举例🌉常数阶O(1)🌉对数阶 O(logN)🌉线性阶 O(N)&#x…

论文设计任务书学习文档|基于智能搜索引擎的图书管理系统的设计与实现

文章目录 论文(设计)题目:基于智能搜索引擎的图书管理系统的设计与实现1、论文(设计)的主要任务及目标2、论文(设计)的主要内容3、论文(设计)的基本要求4、进度安排论文(设计)题目:基于智能搜索引擎的图书管理系统的设计与实现 1、论文(设计)的主要任务及目标 …

Android Activity启动模式

文章目录 Android Activity启动模式概述四种启动模式Intent标记二者区别 Android Activity启动模式 概述 Activity 的管理方式是任务栈。栈是先进后出的结构。 四种启动模式 启动模式说明适用场景standard标准模式默认模式,每次启动Activity都会创建一个新的Act…

【解读】工信部数据安全能力提升实施方案

近日,工信部印发《工业领域数据安全能力提升实施方案(2024-2026年)》,提出到2026年底,我国工业领域数据安全保障体系基本建立,基本实现各工业行业规上企业数据安全要求宣贯全覆盖。数据安全保护意识普遍提高…

【两颗二叉树】【递归遍历】【▲队列层序遍历】Leetcode 617. 合并二叉树

【两颗二叉树】【递归遍历】【▲队列层序遍历】Leetcode 617. 合并二叉树 解法1 深度优先 递归 前序解法2 采用队列进行层序遍历 挺巧妙的可以再看 ---------------🎈🎈题目链接🎈🎈------------------- 解法1 深度优先 递归 前…

动态规划(题目提升)

[NOIP2012 普及组] 摆花 方法一:记忆化搜索 何为记忆化搜素:就是使用递归函数对每次得到的结果进行保存,下次遇到就直接输出即可 那么这个题目使用递归(DFS)是怎样的? 首先我们需要搞清楚几个坑点&#x…

centos离线使用源码安装Postgre SQL

1源代码包获取 https://www.postgresql.org/ftp/source/ 这里我以下载14.5版本的tar.gz为例 2源码包上传服务器 将下载的源码上传至目标服务器,这里我上传到:/usr/local/postgres14.5/src,我们可以创建这个目录,然后在上传到…

Kali Linux下载与安装

目录 1 kali官网下载镜像文件 2 VMware打开kali linux文件 3 启动kali-linux-2023.4操作系统 1 kali官网下载镜像文件 kali官网:https://www.kali.org/get-kali/#kali-platforms 进入kali官网主页后看到如图所示界面,左边“Installer Images”界面是…

【MATLAB】tvf_emd_ MFE_SVM_LSTM 神经网络时序预测算法

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 TVF-EMD_MFE_SVM_LSTM 神经网络时序预测算法是一种结合了变分模态分解(TVF-EMD)、多尺度特征提取(MFE)、聚类后展开支持向量机(…

基于MQTT协议实现微服务架构事件总线

一、场景描述 昨天在博客《客户端订阅服务端事件的实现方法》中提出了利用websocket、服务端EventEmitter和客户端mitt实现客户端订阅服务端事件,大大简化了客户端对服务端数据实时响应的逻辑。上述方案适用于单服务节点的情形。 对于由服务集群支撑的微服务架构&…

一文讲清DTO、BO、PO、VO

DTO、BO、PO、VO是什么? 在后端开发中,比如传统的MVC架构和现在流行的DDD架构,经常会使用到下列几种对象的概念 DTO (Data Transfer Object) 数据传输对象: DTO设计模式用于将数据从服务端传输到客户端,或者在不同的…

代码随想录训练营第31天 | 理论基础、LeetCode 455.分发饼干、

目录 理论基础 视频讲解:手把手带你学会操作链表 | 贪心算法理论基础!_哔哩哔哩_bilibili LeetCode 455.分发饼干 文章讲解:代码随想录(programmercarl.com) 视频讲解:贪心算法,你想先喂哪个小孩?| Le…

物业智能水电抄表管理系统

物业智能水电抄表管理系统是物业管理行业的关键技术之一,其结合了智能化、远程监控和数据分析等功能,为物业管理公司和业主提供了高效、精准的水电抄表管理解决方案。该系统具有多项优势,能够提升物业管理效率,降低成本&#xff0…

深入理解计算机系统学习笔记

1.算术和逻辑操作 下图是一些整数和逻辑操作 这些操作被分为四组:加载有效地址、一元操作、二元操作和移位。二元操作有两个操作数,而一元操作有一个操作数。 1.1加载有效地址 加载有效地址(load effective address)指令 leaq 实际上是 mo…

Pulsar3.2 Function的介绍与使用

概念 Function 步骤 Pulsar Functions是运行在Pulsar上面的计算框架,输入和输出都是基于Pulsar的Topic。通过使用Function可以对进入Pulsar集群的消息进行简单的清洗、计算,这样不仅避免额外部署单独的流处理引擎(SPE),最大限度的提高开发/…

【力扣hot100】刷题笔记Day14

前言 又是新的一周,快乐的周一,快乐地刷题,今天把链表搞完再干活! 114. 二叉树展开为链表 - 力扣(LeetCode) 前序遍历 class Solution:def flatten(self, root: Optional[TreeNode]) -> None:if not r…

Bicycles(变形dijkstra,动态规划思想)

Codeforces Round 918 (Div. 4) G. Bicycles G. Bicycles 题意: 斯拉夫的所有朋友都打算骑自行车从他们住的地方去参加一个聚会。除了斯拉维奇,他们都有一辆自行车。他们可以经过 n n n 个城市。他们都住在城市 1 1 1 ,想去参加位于城市…

【Java程序员面试专栏 算法思维】四 高频面试算法题:回溯算法

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊回溯算法,主要就是排列组合问题,所以放到一篇Blog中集中练习 题目关键字解题思路时间空间全排列回溯算法【元素无重不可复选】构造全排列树,用使…

kafka三节点集群平滑升级过程指导

一、前言 Apache Kafka作为常用的开源分布式流媒体平台,可以实时发布、订阅、存储和处理数据流,多用于作为消息队列获取实时数据,构建对数据流的变化进行实时反应的应用程序,已被数千家公司用于高性能数据管道、流分析、数据集成和任务关键型…

Redis String 类型底层揭秘

目录 前言 String 类型低层数据结构 节省内存的数据结构 前言 Redis 的 string 是个 “万金油” ,这么评价它不为过. 它可以保存Long 类型整数,字符串, 甚至二进制也可以保存。对于key,value 这样的单值,查询以及插…