目录
简介
反序列化漏洞也称为对象注入漏洞(本质上也是注入漏洞的一种),即恶意攻击者利用PHP的对象序列化和反序列化进行攻击,将恶意数据注入PHP的代码中进行执行的漏洞。
在反序列化——unserialize()时存在用户可控参数,而反序列化会自动调用一些魔术方法,如果魔术方法内存在一些敏感操作例如eval()函数,且参数是通过反序列化产生的,那么用户就可以通过改变参数来执行敏感操作,这就是反序列化漏洞。
PHP序列化与反序列化
序列化:把对象转换为字节序列。
反序列化:把字节序列恢复为对象
在PHP中使用serialize()函数可以把变量,包括对象,转化成连续bytes数据。可以将序列化后的变量存在文件里或在网络上传输,然后通过unserialize()反序列化还原为原来的数据。由于传输过程中和存放的位置可能被恶意人员篡改,从而导致反序列化回来的对象数据可能携带有恶意攻击者精心构造的攻击逻辑。
序列化实例
<?php
class Person{
public $name = 'flyingfox';
public