unserialize3 攻防世界
序列化是将对象转换为便于保存的字符串,
而反序列化是将便于保存的字符串转换为字符串。
_wakeup()魔法方法
如果直接传参给code会被__wakeup()函数再次序列化,所以要绕过他,
利用__wakeup()函数漏洞原理:当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过__wakeup的执行。
可构造一个简易脚本
将O:4:"xctf":1:{s:4:"flag";s:3:"111";}中:1:改为:2:绕过_wakeup()魔术方法
后输入网页?code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}可得flag