序列化
序列化漏洞在攻击者主机上
作用:保证编写的代码(数据)可以互联网上完整的传输。
定义`name、age、sex`对象
<?php
class Stu{
public $name;
public $age;
public $sex;
}
$stu1 = new Stu();
$stu1->name = "xy";
$stu1->age = 24;
$stu1->sex = true;
var_dump($stu1);
echo "<br />";
echo serialize($stu1);
?>
输出结果
例:
利用魔法实现计算机的调用
<?php
class animal{
public $name;
public $age;
public function __sleep(){
if(@$_GET['cmd']=="xy"){
system('calc');
}
}
}
$an1=new animal;
$an1->name="dog";
$an1->age=3;
@serialize($an1);
?>
输出结果
反序列化
反序列化漏洞在对象的服务器上(代码审计审出的反序列化漏洞)
- serialize():将对象序列化成字符串
- unserialize():将字符串反序列化回对象
利用魔法实现计算机的调用
<?php
class animal{
public $name;
public $age;
public function __wakeup(){
if(@$_GET['cmd']=="xy"){
system('calc');
}
}
}
$an1=new animal;
$an1->name="dog";
$an1->age=3;
$b=serialize($an1);
@unserialize($b)
?>
输出结果