发现在ctf中,关于PHP几大魔法函数的考点还是很多的,也是很基础的,也有很多的安全问题也是这些魔法函数造成的,简单记录一下关于魔法函数的理解以及在发现安全过程中遇到后怎么进行绕过。
1、__wakeup()
__wakeup()是在反序列化操作中起作用的魔法函数,当unserialize的时候,会检查时候存在__wakeup()函数,如果存在的话,会优先调用__wakeup()函数。举个简单例子:
<?php
class xctf{
public $flag = '111';
public function __wakeup(){
print("this is __wakeup()");
}
}
$test = new xctf();
$t = serialize($test);
unserialize($t);
?>
这样在最后反序列化的时候,直接就调用了__wakeup()这个函数:
放上这个ctf原型,简单记录一下:
<?php
class xctf{
public $flag = '111';
public function __wakeup(){
exit('bad requests');
}
}
//?code=
?>
</