序列化与反序列化

  • 序列化:把对象转换为字节序列的过程称为对象的序列化
  • 反序列化:把字节序列恢复为对象的过程称为对象的反序列化

漏洞成因

反序列化对象中存在魔术方法,而且魔术方法中的代码可以被控制,漏洞根据不同的代码可以导致各种攻击,如代码注入、SQL注入、目录遍历等等

把数据类型压缩到字符串
image.png

序列化的不同结果

  • public
  • private
  • protect

image.png
image.png

漏洞本质

  • unserialize函数的变量可控
  • php文件中存在可利用的类,类中有魔术方法

魔术方法

construct(), destruct()call(), callStatic()
get(), set()
isset(), unset()
sleep(), wakeup()
toString()
invoke()
set_state()
clone()
__debugInfo()

漏洞案例

根据不同的代码可以导致各种攻击,如代码注入、SQL注入、目录遍历等

实例

序列化

image.png
image.png

反序列化

image.pngimage.png
image.png
image.png