打开如图
注意到题目 反序列化函数 unserialize 和 代码内初始化函数 wakeup()
如果一个类定义了__wakup()和__destruct(),则该类的实例被反序列化时,会自动调用__wakeup(), 生命周期结束时,则调用__desturct()。
而,这两个函数存在漏洞,运行如下
其中
O:4:"xctf":1:{s:4:"flag";s:3:"111";}
xctf后面的 1 代表此对象中存在 1 个属性 ,若将其,修改,使得大于其真实属性数量,则跳过此函数。
若输入正确序列,则调用wakeup()
这里我们将其修改为2,即
O:4:"xctf":2:{s:4:"flag";s:3:"111";}
得到
成功
关于wakeup函数及其漏洞
https://blog.spoock.com/2016/11/03/php-wakeup/