首页 > Web开发 > 详细

PHP反序列化漏洞

时间:2019-05-30 21:06:25      阅读:79      评论:0      收藏:0      [点我收藏+]

原理未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而导致代码执行,SQL注入,目录遍历等不可控后果

在反序列化的过程中自动触发了某些魔术方法。

漏洞触发条件unserialize函数的变量可控,php文件中存在可利用的类,类中有魔术方法

魔术方法:

__construct()当一个对象创建时被调用

__destruct()当一个对象销毁时被调用

__toString()当一个对象被当作一个字符串使用

__sleep() 在对象在被序列化之前运行

__wakeup将在序列化之后立即被调用

 

序列化数据格式:

技术分享图片

示例:

<?php
class Example {
    var $var = ‘‘;
    function __destruct() {
        eval($this->var);
    }
}
unserialize($_GET[‘a‘]);
?> 

 

接下来构造序列化数据:a=O:4:"test":1:{s:1:"b";s:10:"phpinfo();";}

成功显示了phpinfo页面:在反序列化该数据时,自动触发了_destruct()函数,执行 eval(phpinfo()):

技术分享图片

 

PHP反序列化漏洞

原文:https://www.cnblogs.com/xiaoqiyue/p/10951836.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!