PHP 反序列化漏洞

news2024/12/25 9:04:47

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

PHP序列化概述

PHP序列化函数:

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

serialize测试:

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

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

测试反序列化:

<?php
$c = 'a:3:{s:1:"a";s:5:"Apple";s:1:"b";b:0;s:1:"x";i:123;}';
$d = unserialize($c);
var_dump($d);
?>

 

PHP反序列化漏洞

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

析构函数及魔术方法:

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

测试例子:

<?php
class Sec{
    public $m = 'user';
    function __wakeup(){
        system($this->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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/570254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python单词库的重要性

Python单词库的重要性 Python是一种高级编程语言&#xff0c;被广泛用于应用程序开发、网络编程、数据科学和人工智能开发等领域。而在Python编程中&#xff0c;单词库(或词典)的重要性不言而喻。单词库就是存放Python程序中经常使用的关键字、方法名、函数名等词汇的地方。本…

SpringBoot --- 实用篇

一、热部署 1.1、概念 什么是热部署&#xff1f;简单说就是你程序改了&#xff0c;现在要重新启动服务器&#xff0c;嫌麻烦&#xff1f;不用重启&#xff0c;服务器会自己悄悄的把更新后的程序给重新加载一遍&#xff0c;这就是热部署。 ​ 热部署的功能是如何实现的呢&…

谷歌浏览器被2345劫持

方法1&#xff1a; 打开控制面板的卸载程序&#xff0c;搜索2345&#xff0c;把那个恶心的“安全组件-2345”卸载掉&#xff01;&#xff01; 这个方法比修改 host 以及注册表要好使地多&#xff01; 参考网址&#xff1a; 【小技巧】修复chrome被2345劫持 方法2&#xff1a; …

Alma Linux 9.2、Rocky Linux 9.2现在是RHEL 9.2的替代品

随着Red Hat Enterprise Linux (RHEL) 9.2的发布&#xff0c;Alma Linux 9.2和Rocky Linux 9.2成为了RHEL 9.2的备选替代品。这两个Linux发行版旨在提供与RHEL兼容的功能和稳定性&#xff0c;以满足那些需要企业级操作系统的用户需求。本文将详细介绍Alma Linux 9.2和Rocky Lin…

nginx反向代理缓存

背景 nginx 一般用来做反向代理和负载均衡&#xff0c;将客户端请求发送到后端的 jetty&#xff0c;并将 jetty 的响应发送给客户端。后端的 jetty 通常不止一个&#xff0c;nginx 根据配置来选择其中一个 jetty&#xff0c;比较常见的选择策略是轮询。示意图如下 启动缓存支…

oracle19c介绍和安装

目录 一、版本 &#xff08;1&#xff09;历史 &#xff08;2&#xff09;11g和12c管理方式区别 11g 12C &#xff08;3&#xff09;各个版本对操作系统要求 二、分类 &#xff08;1&#xff09;分为桌面类和服务器类 &#xff08;2&#xff09;分为企业版和标准版 三…

基于遗传算法的BP神经网络优化算法(matlab实现)

1 理论基础 1.1 BP神经网络概述 BP网络是一类多层的前馈神经网络。它的名字源于在网络训练的过程中&#xff0c;调整网络的权值的算法是误差的反向传播的学习算法&#xff0c;即为BP学习算法。BP算法是Rumelhart等人在1986年提出来的。由于它的结构简单&#xff0c;可调整的…

个人网站实现微信扫码登录

⭐个人网站实现微信扫码登录 &#x1f948;效果图 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kzSrNgiv-1685034480658)(https://img.ggball.top/picGo/动画.gif)] &#x1f4d7;开发背景 为什么想用微信扫码登录呢&#xff1f; 起因是自己开发…

【CH32】| 02——常用外设 | GPIO

系列文章目录 【CH32】| 00——开发环境搭建 【CH32】| 01——新建工程 | 下载 | 运行 |调试 【CH32】| 02——常用外设 | GPIO 失败了也挺可爱&#xff0c;成功了就超帅。 文章目录 前言1. GPIO简介2. IO口的内部结构框图保护二极管上下拉电阻施密特触发器两个MOS管输出寄存器…

chatgpt赋能python:Python加速循环的执行方法详解

Python 加速循环的执行方法详解 Python是一门非常流行的编程语言&#xff0c;它可以在很多领域应用&#xff0c;比如Web开发、数据分析、机器学习等等。然而&#xff0c;Python执行速度较慢&#xff0c;特别是在循环语句中&#xff0c;代码执行效率会大打折扣。在本文中&#…

【基于ROS Melodic环境安装rosserial arduino】

【基于ROS Melodic环境安装rosserial arduino】 1. 简介2. 安装2.1 Ubuntu下的Arduino IDE安装2.2 Ubuntu下rosserial arduino软件安装2.3 安装ros_lib到Arduino IDE开发环境 3. 将ros_lib配置到 Arduino 环境库中4. 使用helloword5. 实验验证6.总结 1. 简介 这个教程展示如何…

Linux系统初始化命令的备忘单,Linux运维工程师收藏!

在管理和维护Linux系统时&#xff0c;有一些常用的命令可以帮助您进行系统初始化和配置。这些命令涵盖了各种任务&#xff0c;包括系统设置、用户管理、软件安装和网络配置等。 本文将为您提供一个Linux系统初始化命令的备忘单&#xff0c;以便在需要时方便查阅和使用。 系统设…

chatgpt赋能python:Python动画制作指南:从入门到精通

Python动画制作指南&#xff1a;从入门到精通 Python作为一种易学易用的编程语言&#xff0c;在数据分析、机器学习等领域已经得到广泛应用。但是你知道吗&#xff1f;Python还可以用来制作动画&#xff01;本文将为你介绍如何用Python制作动画&#xff0c;从入门到精通&#…

chatgpt赋能python:Python写计算器:从入门到精通

Python写计算器&#xff1a;从入门到精通 简介 计算器无疑是计算机编程中最基本且实用的工具之一。Python 作为一门易于学习且功能强大的编程语言&#xff0c;能够轻松实现计算器的功能。在本文中&#xff0c;我们将介绍如何使用 Python 编写一个简单的计算器。 如何实现&am…

chatgpt赋能python:Python的封装:提高代码的可维护性和可复用性

Python的封装&#xff1a;提高代码的可维护性和可复用性 在软件开发领域中&#xff0c;封装是一种重要的概念。它被用于隐藏程序的实现细节&#xff0c;使得程序的功能变得更加易于使用和维护。在Python编程中&#xff0c;封装是一种被广泛使用的技术&#xff0c;可以帮助你提…

Linux 信号知识点总结

对于 Linux来说&#xff0c;实际信号是软中断&#xff0c;许多重要的程序都需要处理信号。信号&#xff0c;为 Linux提供了一种处理异步事件的方法。比如&#xff0c;终端用户输入了 ctrlc 来中断程序&#xff0c;会通过信号机制停止一个程序。信号概述 1.信号的名字和编号: 每…

JavaSE_day38(异常分类,自定义异常,File介绍,方法使用,相对路径与绝对路径概念以及注意的点)

1 A.java * 异常的分类&#xff1a; 运行时期异常:RuntimeException的子类就是运行时期异常&#xff0c;在编译时期可以自由选择处理或者不处理 编译时期异常:是Exception的子类&#xff0c;非RuntimeExcpetion的子类&#xff0c;在编译时期必须处理 public c…

注意力机制(一)SE模块(Squeeze-and-Excitation Networks)

Squeeze-and-Excitation Networks&#xff08;压缩和激励网络&#xff09; 论文地址&#xff1a;Squeeze-and-Excitation Networks 论文中文版&#xff1a;Squeeze-and-Excitation Networks_中文版 代码地址&#xff1a;GitHub - hujie-frank/SENet: Squeeze-and-Excitation Ne…

chatgpt赋能python:Python内置:优化SEO的利器?

Python 内置&#xff1a;优化SEO的利器&#xff1f; Python是一种广泛使用的高级编程语言&#xff0c;拥有丰富的标准库和第三方库&#xff0c;能够适用于很多领域。其中&#xff0c;Python内置的一些功能&#xff0c;比如字符串操作和网络请求&#xff0c;可以帮助我们进行SE…

web前端综合案例——小兔鲜首页(html+css)

前言&#xff1a;我这里只使用了html和css&#xff0c;js没有使用 项目源代码&#xff1a;https://pan.baidu.com/s/1alnekYEu5F9XwHTW7dO5RA?pwdqjhd 页面效果&#xff1a; 项目准备阶段&#xff1a; 1.准备项目相应的图片素材&#xff0c;设计稿。 2.创建项目: 2.1 项目…