iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP 反序列化漏洞
  • 852
分享到

PHP 反序列化漏洞

phpweb安全 2023-09-01 11:09:52 852人浏览 独家记忆
摘要

PHP反序列化漏洞在实际测试中出现的频率并不高,主要常出现在CTF中。 php序列化概述 PHP序列化函数: serialize:将PHP的数据,数组,对象等序列化为字符串unserialize:将序列化后的字符串反序列化为数据,数组,对

PHP反序列化漏洞在实际测试中出现的频率并不高,主要常出现在CTF中。

php序列化概述

PHP序列化函数:

  • serialize:将PHP的数据,数组,对象等序列化为字符串
  • unserialize:将序列化后的字符串反序列化为数据,数组,对象

serialize测试:

 'Apple','b' => false,'x' => 123);$s = serialize($a);echo $s;?>

序列化后的字符串是明文的,只是使用一些代号来表示原来的数据。

测试反序列化:

 

PHP反序列化漏洞

PHP反序列化漏洞就发生在对序列化后的数据进行反序列化的过程,由于反序列化会自动调用PHP的析构函数以及魔术方法,因而导致运行结果超出开发者的预期。

析构函数及魔术方法:

__construct()//创建对象时触发__destruct() //对象被销毁时触发__call() //在对象上下文中调用不可访问的方法时触发__callStatic() //在静态上下文中调用不可访问的方法时触发__get() //用于从不可访问的属性读取数据__set() //用于将数据写入不可访问的属性__isset() //在不可访问的属性上调用isset()或empty()触发__unset() //在不可访问的属性上使用unset()时触发__invoke() //当脚本尝试将对象调用为函数时触发

测试例子:

m);    }}//$o = unserialize($_GET['a']);$a = 'a=O:3:"Sec":1:{s:1:"m";s:8:"ipconfig";}';$o = unserialize($a);?>

这种利用方式是基于系统中已经实现的类中析构函数或魔术方法,如果魔术方法中提供了system函数执行环境们就可以直接实现命令执行。倘若当前环境中没有类提供魔术方法,或者魔术方阿飞中没有危险的利用代码该怎么办?

还可以调用PHP原生类

其实PHP反序列化的利用方式并不止这些,后面先欠着,等有时间了再进行更新。这里只是先对PHP反序列化漏洞有个初步了解。

可参考文章:https://www.cnblogs.com/bmjoker/p/13742666.html

来源地址:https://blog.csdn.net/qq_61553520/article/details/130848341

--结束END--

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

本文链接: https://www.lsjlt.com/news/388164.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作