当前位置: 首页 > 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.lryc.cn/news/622337.html

相关文章:

  • 48Days-Day19 | ISBN号,kotori和迷宫,矩阵最长递增路径
  • Point-LIO技术文档中文翻译解析
  • 文章数据发布到苹果CMS(MacCMS)网站技巧
  • ETH持续上涨推动DEX热潮,交易活跃度飙升的XBIT表现强势出圈
  • 图论Day3学习心得
  • 【机器学习】核心分类及详细介绍
  • 开疆智能ModbusTCP转Ethernet网关连接FBOX串口服务器配置案例
  • 【iOS】多线程原理
  • 昇腾AI自学Day1-- 深度学习基础工具与数学
  • C语言基础08——文件的输入与输出
  • git clone https://gh.llkk.cc/
  • 什么才是真正的白盒测试?
  • 高并发接口性能优化实战:从200ms到20ms的蜕变之路
  • Python正则表达式处理Unicode字符完全指南:从基础到高级实战
  • Python工具箱系列(六十四)
  • Java Lambda表达式是什么,怎么用
  • JavaWeb开发_Day12
  • 研学智得AI-知网推出的AI学术文献阅读工具
  • OpenCV---morphologyEx形态学操作
  • Java中MybatisPlus使用多线程多数据源失效
  • Vue 侦听器(watch 与 watchEffect)全解析3
  • 如何在 FastAPI 中玩转 APScheduler,让任务定时自动执行?
  • 快速了解PCA降维
  • 《Python列表和元组:从入门到花式操作指南》
  • 接口自动化测试步骤
  • Stability AI技术浅析(二):LDM
  • productionSourceMap:true -> 编译的时候不是那么乱码了
  • 详解 k 近邻(KNN)算法:原理、实践与调优 —— 以鸢尾花分类为例
  • C++面试——内存
  • docker重启或系统重启后harbor自动启动