PHP反序列化漏洞基础概要
创始人
2025-06-01 19:19:30

目录

什么是反序列化漏洞?

序列化 serialize

反序列化 unserialize

常见魔法函数

反序列化漏洞防御


什么是反序列化漏洞?

反序列化又叫对象注入,漏洞产生是程序在处理对象、魔术函数以及序列化问题时所导致的 。当传给unserialize()的参数可控时,可以通过传入一个精心构造的序列化字符串,从而控制对象内部的变量甚至是函数。


序列化 serialize

对象的状态信息转换为可以存储或传输的形式的过程

序列化期间,对象将当前的状态写入到临时或持久型的存储区,将状态信息保存为字符串。

序列化只序列化对象,不序列化方法

class S{public $test="pikachu";}$s=new S(); //创建一个对象serialize($s); //把这个对象进行序列化序列化后得到的结果是这个样子的:O:1:"S":1:{s:4:"test";s:7:"pikachu";}O:代表object1:代表对象名字长度为一个字符S:对象的名称1:代表对象里面有一个变量s:数据类型4:变量名称的长度test:变量名称s:数据类型7:变量值的长度pikachu:变量值

反序列化 unserialize

将序列化后的字符串还原成对象

反序列化的数据本质上来说时没有危害的,用户可控数据进行反序列化是存在危害的,反序列化的危害关键在于可控不可控

$u=unserialize("O:1:"S":1:{s:4:"test";s:7:"pikachu";}");echo $u->test; //得到的结果为pikachu

常见魔法函数

        __construct()当一个对象创建时被调用__destruct()当一个对象销毁时被调用__toString()当一个对象被当作一个字符串使用__sleep() 在对象在被序列化之前运行__wakeup将在序列化之后立即被调用如何绕过 __wakeup()
当 序列化的字符串中的 属性值 个数 大于 属性个数 就会导致反序列化异常,从而绕过 __wakeup()

反序列化漏洞防御

不要把用户的输入或者是用户可控的参数直接放进反序列化的操作中去

相关内容

热门资讯

投资者提问:请问董秘,当前中日... 投资者提问:请问董秘,当前中日关系陷入僵局乃至谷底之际,公司有规划更多使用国产光刻胶等材料来替代日系...
富德生命人寿咸阳中心支公司被罚... 12月16日金融一线消息,据咸阳金融监管分局行政处罚信息公开表显示,富德生命人寿保险股份有限公司咸阳...
市场监管总局:抓紧推进出台《互... 转自:北京日报客户端记者16日从市场监管总局获悉,市场监管总局正抓紧推进《互联网平台反垄断合规指引》...
天奇股份:锂电循环业务夯实产业... 12月16日,江西天奇金泰阁集团(简称“天奇金泰阁”)资本赋能发展大会在江西龙南举行。会上,天奇股份...
「侠客岛」他们用上了“AI分身...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! (来源:海外网)来源...