一、基础
序列化和反序列化
php中的两个函数
序列化函数:serialize()
反序列化函数:unserialize()
当在php中创建了一个对象后,可以通过serialize()把这个对象转变成一个字符串,保存对象的值方便之后的传递与使用。
具体使用如下:
<?php
class xu{
var $a='1';
}
$class1=new xu;
echo serialize($class1);
?>
运行结果:O:2:“xu”:1:{s:1:“a”;s:1:“1”;}
反序列化
<?php
$data='O:2:"xu":1:{s:1:"a";s:1:"1";}';
$class2=unserialize($data);
var_dump($class2);
?>
php中有一类特殊的方法叫“Magic function”, 这里我们着重关注一下几个:
构造函数__construct():当对象创建(new)时会自动调用。但在unserialize()时是不会自动调用的。
析构函数__destruct()和__wakeup():当对象被销毁时会自动调用。
题目:
xctf:Web_php_unserialize
<?php
class Demo {
private $file = 'index.php';
public function __construct($file) {
$this->file = $file;
}
function __destru