序列化与反序列化
- 序列化:把对象转换为字节序列的过程称为对象的序列化
- 反序列化:把字节序列恢复为对象的过程称为对象的反序列化
漏洞成因
反序列化对象中存在魔术方法,而且魔术方法中的代码可以被控制,漏洞根据不同的代码可以导致各种攻击,如代码注入、SQL注入、目录遍历等等
把数据类型压缩到字符串
序列化的不同结果
- public
- private
- protect
漏洞本质
- unserialize函数的变量可控
- php文件中存在可利用的类,类中有魔术方法
魔术方法
construct(), destruct()call(), callStatic()
get(), set()
isset(), unset()
sleep(), wakeup()
toString()
invoke()
set_state()
clone()
__debugInfo()
漏洞案例
根据不同的代码可以导致各种攻击,如代码注入、SQL注入、目录遍历等
实例
序列化