标签:bool boolean object 关注 构造函数 index str OLE 构造
0x01什么是序列化
0x04如何利用序列化漏洞
0x06实例
这里借用别人的一个很好的例子来说明一下这个问题。我们针对__wakeup()场景做实验。
建立一个index2的php文件,如下:
1 <?php 2 class chybeta{ 3 var $test = ‘123‘; 4 function __wakeup(){ 5 $fp = fopen("shell.php","w") ; 6 fwrite($fp,$this->test); 7 fclose($fp); 8 } 9 } 10 $class3 = $_GET[‘test‘]; 11 print_r($class3); 12 echo "</br>"; 13 $class3_unser = unserialize($class3); 14 require "shell.php"; 15 // 为显示效果,把这个shell.php包含进来 16 ?>
我们可以看见上面的存在明显的漏洞,主要是没有对接受的test参数做处理,unserialize()后直接调用了魔法方法__wakeup(),该方法就将test直接写入到了shell.php中。因此我们直接给test传入一个我们精心构造的参数即可利用漏洞了,例如我们可以构造 test=O:7:"chybeta":1:{s:4:"test";s:19:"";} ,即可看到命令被成功执行。
这是我个人的第一次写博客,只是希望自己能通过写加深自己对知识的理解,同时通过写博客来增加对自己的要求,博客有很多不足,希望大家多多指正,我会一直努力学习。
标签:bool boolean object 关注 构造函数 index str OLE 构造
原文地址:https://www.cnblogs.com/Omasker/p/8961844.html