反序列化
序列化
函数: serialize
将PHP中的值转化为一个字符串 有利于存储或传递 PHP 的值 同时不丢失其类型和结构
如果被序列化的值是一个对象 则会调用对象的__sleep 魔法函数
反序列化
函数:unserialize
反序列化在序列化操作后产生的字符串 还原序列化前的值
如果被反序列化的结果包含对象 则会调用对应对象的__wakeup 魔法函数
如果反序列化的字符串被用户可控 攻击者则有可能利用PHP中现有的对象调用对应魔法函数进行攻击(主要看对象定义的魔法函数所拥有的功能)
如果存在可控反序列化点则存在风险. 但在PHP语言中,如果反序列化没有可以利用的反序列化链,则无法造成危害 可以看看这篇文章来详细了解反序列化原理及利用方法
除了直接调用unserialize函数外 还有覆盖session文件 其他调用反序列化的扩展函数 触发反序列化 因并不常见未做整理
最后更新于