0x01 前言
最近在学习PHP的反序列化漏洞,做了几道题目,也总结出了一点经验。当然我是小白,可能有不少地方有缺漏欢迎各位大佬批评指正
0x02 原理
1、序列化与反序列化
序列化就是将某个对象转化为字节数据的过程,反序列就是将字节数据转化为对象的过程。打个比方就是序列化就是存档,反序列化就是读档。
<?php
Class exa{
public function a1()
{
echo "123231";
}
function __wakeup()
{
$aa="qwe";
echo $aa;
}
function a3()
{
echo $this->source;
}
}
$a=new exa;
$a -> source=123333;
echo serialize($a);
?>
这是一段PHP的序列化的代码,其运行结果为
O:3:"exa":1:{s:6:"source";i:123333;}
当然这段代码是有规律可循的可以参考PHP 序列化(serialize)格式详解-php手册-PHP中文网
2、魔术方法
学过python的朋友可能知道,初始化方法是在当某个实例被创建的时候,自动执行