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是一种容器化平台,通过使用Docker,开发人员可以轻松地打包、交付和运行应用程序。以下是Docker中最常用的20个命令: docker run: 运行一个容器。 docker run <image_name>docker ps:…...
Redis的发布订阅机制及其使用场景
Redis的发布订阅(Pub/Sub)机制是一种消息通信模式,其中发送者(发布者)将消息发送到特定的频道,而订阅者则订阅其中一个或多个频道,以接收感兴趣的消息。这种模式可以用于构建实时通信系统、消息…...
计算机网络的基础知识
网络的性能指标:网络速率,bpsbit/s; 时延包括四个组成部分:发送时延、传播时延、排队时延、处理时延; 网络各个层次结构设计的基本三原则:各个层次之间是相互独立的,每一个层之间有足够的灵活…...
QT-Http post 同步请求
在 Qt 中,你可以使用 QNetworkAccessManager 对象的 sendCustomRequest 方法来发送同步的 HTTP 请求。以下是一个演示如何使用该方法发送同步 HTTP POST 请求的示例代码: #include <QCoreApplication> #include <QNetworkAccessManager> #i…...
【JVM】StringTable 字符串常量池
参考:javaGuide 字符串常量池 是 JVM 为了提升性能和减少内存消耗针对字符串(String 类)专门开辟的一块区域,主要目的是为了避免字符串的重复创建 String的不可变性 1.通过字面量的方式(区别于new)给一个…...
Unity中URP实现水体(水的焦散)
文章目录 前言一、原理1、 通过深度图,得到 对应像素 在 世界空间下的Z值2、得到模型顶点在 观察空间 下的坐标3、由以上两点得到 深度图像素 对应的 xyz 值4、最后,转化到 模型本地空间下,用其对焦散纹理采样 二、实现1、获取深度图2、在顶点…...
vue构建版本
完整版:同时包含编译器和运行时的版本。 编译器:用来将模板字符串编译成为 JavaScript 渲染函数的代码。 运行时runtime:用来创建 Vue 实例、渲染并处理虚拟 DOM 等的代码。基本上就是除去编译器的其它一切。 UMD:UMD 版本可以…...
Docker挂载镜像到本地(日常记录)
Docker挂载镜像到本地 1、进入jar包文件夹 cd docker-publish/2、编写DockFile文件 #使用Jdk8环境作为基础镜像,如果镜像不在本地则会从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(词项查询)数字的精确查询文本的精确查询查询优化 terms query(多词项查询)terms_set que…...
小狐狸chat2.7.2免授权修复版可用版
小狐狸chat2.7.2免授权修复版可用版 在网络上面找了好几个版本不能使用,今天发布这个仔细测试正常使用 主要功能:独立版无限多开支持分销会员充值自己APP打包小程序万能创作MJ绘图多个国内接口 国外很火的ChatGPT,这是一种基于人工智能技术…...
通过QScrollArea寻找最后一个弹簧并且设置弹簧大小
项目原因,最近需要通过QScrollArea寻找其中最后一个弹簧并且设置大小和策略,因为无法直接调用UI指针,所以只能用代码寻找。 直接上代码: if (m_scrollArea){int iScrollWidth m_labelSelectedTitle->width();m_scrollArea-&g…...
為什麼使用海外動態代理IP進行網路爬蟲?
網路爬蟲作為獲取網路數據的重要工具,其重要性不言而喻。但隨著網站反爬策略的日益嚴格,爬蟲任務變得愈發困難,不過海外動態代理IP可以很好地解決這一問題。本文將詳細闡釋動態代理IP在爬蟲中的應用,以及如何使用動態代理IP提升爬…...
LeetCode 热题100 刷题笔记
一:哈希表 一般哈希表都是用来快速判断一个元素是否出现集合里。 直白来讲其实数组就是一张哈希表,哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素。 1.两数之和 题目链接:. - 力扣(LeetCode…...
veridata安装
GoldenGate Veridata是GoldenGate中用于比较数据库间数据同步效果的一个对比软件。Veridata基于Web,支持大据量的数据对比,能够在不停止数据同步的情况下就可以比较数据。 1、安装veridata前我们都会先安装 middleware infrastructure 这时我们会添加几个…...
面试笔记系列三之spring基础知识点整理及常见面试题
目录 如何实现一个IOC容器? 说说你对Spring 的理解? 你觉得Spring的核心是什么? 说一下使用spring的优势? Spring是如何简化开发的? IOC 运行时序 prepareRefresh() 初始化上下文环境 obtainFreshBeanFactory() 创建并…...
面试笔记系列四之SpringBoot+SpringCloud+计算机网络基础知识点整理及常见面试题
目录 Spring Boot 什么是 Spring Boot? Spring Boot 有哪些优点? SpringBootApplication注解 Spring Boot 的启动流程 Spring Boot属性加载顺序 springboot自动配置原理是什么?(*) 如何理解springboot中的start…...
Kernel[Device Tree] - 1. 设备树的由来
内核代码中,arch文件夹下,是各个架构相关的代码,arm也在里面。 arm子文件夹下,有mach-xxx的目录,就是针对各个芯片类型的,比如mach-imx就是imx系列的芯片。 再里面就是具体的芯片或SOC,比如ma…...
AI编程助手谁才是真·生产力引擎?2026奇点大会4大旗舰工具横向测评(含代码生成准确率、调试通过率、IDE兼容性三重压力测试)
第一章:2026奇点智能技术大会:AI编程助手对比评测 2026奇点智能技术大会(https://ml-summit.org) 在2026奇点智能技术大会上,来自全球12家主流厂商的AI编程助手接受了统一基准测试——涵盖代码补全准确率、跨文件上下文理解、调试建议有效性…...
FRED应用:LED手电筒模拟
对于大多数应用,发光二极管,或者LED,近几年已经超越了白炽灯光源。LED的优势包括体积小巧、发光效率高和使用寿命长。LED也有光学工程师必须处理的不良特性,比如混色和准直的需要。在这个例子中,我们来看一个LED手电筒…...
RabbitMQ实战:插件扩展机制全解析——常用插件、安装启用、管理、生产推荐
RabbitMQ实战:插件扩展机制全解析——常用插件、安装启用、管理、生产推荐一、前言二、基础认知:RabbitMQ插件机制是什么2.1 插件定义2.2 插件核心特点2.3 插件扩展流程图三、RabbitMQ插件:安装、启用、禁用、管理全流程3.1 插件核心目录3.2 …...
5个高效方案彻底解决Visual C++运行库安装问题
5个高效方案彻底解决Visual C运行库安装问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist VisualCppRedist AIO是一个强大的Visual C运行库集成安装包…...
013、微调中的评估体系:自动化指标与人工评估设计
微调中的评估体系:自动化指标与人工评估设计 从一次深夜调试说起 上周三凌晨两点,我在实验室盯着屏幕上的评估报告发愣。模型在BLEU分数上比基线高了3个点,但实际跑出来的生成结果简直没法看——格式混乱、逻辑跳跃,甚至出现了明显的常识错误。那一刻我突然意识到:我们太…...
Neo4j 5.x 安装后登录总失败?别慌,这可能是默认密码策略在‘捣鬼’
Neo4j 5.x 登录失败的终极排查指南:从密码策略到实战解决方案 最近在技术社区看到不少关于Neo4j 5.x登录问题的讨论——明明按照官方文档操作,却在登录环节反复碰壁。这让我想起去年带队迁移图数据库时,团队新人几乎每人都会在这个"坑&q…...
2025最权威的降重复率助手横评
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 对文本结构做合理调整,努力避免模板化句式,全力融入个人特别见解与非…...
终极指南:如何用UnrealPakViewer快速解析和优化UE4 Pak文件
终极指南:如何用UnrealPakViewer快速解析和优化UE4 Pak文件 【免费下载链接】UnrealPakViewer 查看 UE4 Pak 文件的图形化工具,支持 UE4 pak/ucas 文件 项目地址: https://gitcode.com/gh_mirrors/un/UnrealPakViewer 你是否曾为UE4 Pak文件的黑盒…...
面试官:聊聊RocketMQ是怎么保存偏移量的?
对消息队列来说,偏移量是一个非常重要的概念,如果偏移量保存失败,可能会造成消息丢失、消息重复消费等问题。今天来聊一聊 RocketMQ 是怎么保存消息偏移量的。1 消息拉取RocketMQ 客户端启动的时候,会启动重平衡线程 RebalanceSer…...
从台球碰撞到火箭发射:用Python模拟动量守恒定律的5个趣味案例
从台球碰撞到火箭发射:用Python模拟动量守恒定律的5个趣味案例 物理学中的动量守恒定律看似抽象,但通过编程模拟,我们可以直观地观察这一原理在各类场景中的应用。本文将带你用Python实现5个经典案例,从台球碰撞到火箭发射&#x…...
