反序列化

序列化

函数: serialize

将PHP中的值转化为一个字符串 有利于存储或传递 PHP 的值 同时不丢失其类型和结构

如果被序列化的值是一个对象 则会调用对象的__sleep 魔法函数

反序列化

函数:unserialize

反序列化序列化操作后产生的字符串 还原序列化前的值

如果被反序列化的结果包含对象 则会调用对应对象的__wakeup 魔法函数

如果反序列化的字符串被用户可控 攻击者则有可能利用PHP中现有的对象调用对应魔法函数进行攻击(主要看对象定义的魔法函数所拥有的功能)

如果存在可控反序列化点则存在风险. 但在PHP语言中,如果反序列化没有可以利用的反序列化链,则无法造成危害 可以看看这篇文章来详细了解反序列化原理及利用方法

除了直接调用unserialize函数外 还有覆盖session文件 其他调用反序列化的扩展函数 触发反序列化 因并不常见未做整理

最后更新于