@TOC
序列化与反序列化定义
一、序列化:指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或经由网络中发送),以留待后续在相同或另一台计算机环境中,能恢复原先状态的过程。依照序列化格式重新获取字节的结果时,可以利用它来产生与原始对象相同语义的副本。
简单来说就是将对象转化成字符串
二、目的:方便存储与网络运输
三、反序列化:与序列化相反
代码举例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <?php class Student //定义一个类// { public $name = 'studentone'; function getName() { return "deelmind"; } function__construct() { echo"__construct" echo"</br>"; } } $s=new Student(); echo $s->getName()."</br>"; $s_serialize=serialize($s); print_r($s_serialize); echo"</br>"; ?>
|

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <?php class Student //定义一个类// { public $name = 'studentone'; function getName() { return "deelmind"; } function__construct() { echo"__construct" echo"</br>"; $Student = '0:7:"Student":1:{s:4:"name";s:10:"studentone";}'; $s_unserialize = unseralize($Student); print_r($s_unseralize); echo"</br>"; ?>
|

反序列化漏洞原理
反序列化漏洞就是指黑客序列化一个包含恶意代码的实例对象(通常是Runtime.exec来执行后台命令),此时会得到对象的字节数据。然后字节数据通过接口发送到服务端(被攻击的服务器)。服务器在反序列化出对象的过程中(readObject方法里面)就会触发触发恶意代码执行,从而达到攻击的目的。