鼠鼠我今天磨了一点时间,终于把反序列化磨明白了一点
什么是反序列化
序列化/反序列化其实是一种传递对象的方法
序列化就是将对象转换成字符串。字符串包括:属性名、属性值、属性类型和该对象对应的类名。在程序结束的时候,存在内存的记忆资料(变量,对象等)都会被立即销毁,但是有的时候,我们需要存储并传递一些持久类习性的数据时,就不能再将资料存储在内存里了,这时候,php序列化就将记忆资料的变量存储在了档案中(比如存储在mysql数据库中)
反序列化就是将这个过程反过来
对象的序列化利于对象的保存和传输,也可以让多个文件共享对象。
序列化和反序列化在php应用系统中,一般被用作缓存(cookie、session缓存等)
serialize()#将对象序列化成字符串
unserialize()#将字符串反序列成对象
一个简单的例子
<?php
class test{
public $str='hacker';
}
$a = new test(); #创建一个对象
echo serialize($a); #将这个对象进行序列化
echo "<br>";
print_r(unserialize($_GET['a']));#注意使用单引号包裹变量,否则会解析无法进行反序列化
?>
等刷写ctf的反序列化题目再来补充。。。