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

【反序列化基本介绍】

一、php序列化和反序列化

请添加图片描述
序列化后的a代表数组Array,是数据类型(注意此处的 a​ 仅标识数据结构类型),2指的是里面包含的元素数量

1和3两个数字代表变量的长度,原代码里的变量a和变量cat长度分别为1和3

请添加图片描述

二、对象的反序列化和序列化

请添加图片描述
请添加图片描述

private

当遇到用private对变量命名时:

上面的例子中 name 本来应该是4位 ,但到了上面却变成了10位 ,我们看到name前面有两个空字节方框 还有一个user ,当用private对变量命名时,会在前面自动加上两个空字节和一个类名

protected

当遇到用protected对变量命名时name会变成7位,另个空字节中间加了一个*

这里值得注意的点是低版本php,我们在构造序列化时如果不加这些标识是会报错的,它本来是private变量我们把它当成public变量,会报错,但在7.2以上版本的php中它不会报错,如果没有加标识符 它也不会报错,就自动变成了public变量

三、__destruct和__wakeup

请添加图片描述
假设我们有条代码最终会执行 system($a->b)
在这里插入图片描述
我们只需要在序列化销毁的时候(__destruct )构造b=‘ls’

那么最终的会执行 system('ls')

四、php反序列化漏洞

请添加图片描述
上面是最简单的一个能造成php反序列化的一个点,下面看一个列子:

<?phpclass Fl
http://www.dtcms.com/a/332438.html

相关文章:

  • 25.Linux 聚合链路与软件网桥
  • 【中微半导体】BAT32G139GK48FA 定时器B输入捕获测速(寄存器TBSR/TBIER/TB/TBGRA/TBGRC)
  • Struts文件泄露漏洞分析与修复方案
  • 企业级Spring事务管理:从单体应用到微服务分布式事务完整方案
  • Baumer高防护相机如何通过YoloV8深度学习模型实现驾驶员疲劳的检测识别(C#代码UI界面版)
  • MySQL 主键详解:作用与使用方法
  • 搭建前端开发环境 安装nvm nodejs pnpm 配置环境变量
  • MySQL、PolarDB、PolarDB-X、TableStore、MongoDB、TiDB、ClickHouse选型
  • 融合开源AI智能名片与链动2+1模式的微商新零售转型研究——基于S2B2C商城小程序的实践探索
  • 戴永红×数图:重构零售空间价值,让陈列创造效益!
  • HTML5新增属性
  • 鸿蒙任务调度机制深度解析:优先级、时间片、多核与分布式的流畅秘密
  • 什么是国产化防爆平板?有哪些功能特点?应用在什么场景?
  • 【iOS】多线程原理
  • AI生成内容版权争议:当算法创作撞上法律边界
  • Python入门第2课:变量、数据类型与输入输出
  • Java Maven更换国内源
  • 企业网盘、NAS、移动硬盘、同步盘都是什么意思?
  • 个人博客系统测试文档
  • Python复杂元素排序:从基础到高阶
  • 以太网转换器实现:S7-300通过MPI转以太网连接多类工业设备
  • Java锁机制深度解析:从synchronized到StampedLock
  • Linux网络基础(一)
  • 嵌入式开发学习———Linux环境下网络编程学习(二)
  • 开始回溯的学习
  • OpenSCA开源社区每日安全漏洞及投毒情报资讯|14th Aug. , 2025
  • hex文件结构速查
  • Flutter 以模块化方案 适配 HarmonyOS 的实现方法
  • 3分钟解锁网页“硬盘“能力:离线运行VSCode的新一代Web存储技术
  • 二叉树(1):二叉树的前、中、后和层次遍历