PHP反序列化一

news2024/9/27 19:17:20

1.序列化/反序列化

序列化:对象转化为字节流

反序列化:字节流转化为对象

二者相互结合,可以轻松的存储和传输数据,使程序更具维护性

2.反序列化漏洞

原因是程序没有对用户输入的反序列化字符串进行检测,导致反序列化过程可以被恶意控制,进而造成代码执行、getshell等一系列不可控的后果

反序列化漏洞并不是PHP特有,也存在于Java、Python等语言之中,但其原理基本相通

3.PHP反序列化

PHP反序列化漏洞:也叫PHP对象注入,就是当程序在进行反序列化时,会自动调用一些函数,但是如果传入函数的参数可以被用户控制的话,用户可以输入一些恶意代码到函数中,从而导致反序列化漏洞。

可以理解为程序在执行unserialize()函数时,自动执行了某些魔术方法(magic method),而魔术方法的参数被用户所控制,这就会产生安全问题

漏洞利用条件:

Unserialize()函数的参数可控

存在可利用的魔术方法

4.PHP序列化:对象转化为字符

以上格式为: 类型:长度:内容 例如上例为类型O长度4内容Girl

2代表有两种属性,第一个是姓名,第二个是年龄,后面分别跟着属性值,如果是2,即应该有四部分内容,3的话则是6部分内容

常见的表示类型的字符:

O:类

a:数组(array)

b:布尔(boolean)

i:整型

s:字符串

N:Null

d:double,浮点型

5.PHP反序列化:字符转化为对象

6.利用xss

7.访问控制符public/protected/private

var和public:var 和 public 声明的字段都是公共字段,因此它们的字段名的序列化格式是相同的。公共字段的字段名按照声明时的字段名进行序列化,但序列化后的字段名中不包括声明时的变量前缀符号¥。

protected:声明的字段为保护字段,在所声明的类和该类的子类中可见,但在该类的对象实例中不可见。因此保护字段的字段名在序列化时,字段名前面会加上\0*\0的前缀。这里的\0表示 ASCII 码为0的字符,属于不可见字符,因此该字段的长度会比可见字符长度大3。

private:声明的字段为私有字段,只在所声明的类中可见,在该类的子类和该类的对象实例中均不可见。因此私有字段的字段名在序列化时,字段名前面会加上\0<declared class name>\0前缀。这里 <declared class name> 表示的是声明该私有字段的类的类名,而不是被序列化的对象的类名。因为声明该私有字段的类不一定是被序列化的对象的类,而有可能是它的祖先类。

8.魔术方法

常见的有:

__construct( )       //对象创建(new)时会自动调用

__destruct( )        //对象被销毁时触发

__toString( )        //把对象当作字符串使用时触发

__wakeup( )        //使用unserialize时触发

__sleep( )          //使用serialize时触发

__call( )           //在对象上下文中调用不可访问的方法时触发

__callStatic( )     //在静态上下文中调用不可访问的方法时触发

__get($key)      //用于从不可访问的属性读取数据,$key就是不存在的属性

__set( )           //用于将数据写入不可访问的属性

__isset( )         //在不可访问的属性上调用isset()或empty()触发

__unset( )        //在不可访问的属性上使用unset()时触发

__clone( )        //当克隆对象是调用

__invoke( )       //当脚本尝试将对象调用为函数时触发

__autoload( )     //在代码中当调用不存在的类时会自动调用该方法。

(1)案例1

(2)案例2

(3)案例3

写入攻击口令后会自动生成一个a.php文件,我们写入phpinfo然后对该文件进行访问发现进入了后台

9.属性赋值

案例4

方法一:直接在属性中赋值(缺点是只能赋值字符串)

方法二:外部赋值(缺点只能操作public属性)

对于php7.1+的版本,反序列化对属性类型不敏感。尽管题目的类下的属性可能不是public,但是我们可以本地改成public,然后生成public的序列化字符串。由于7.1+版本的容错机制,尽管属性类型错误,php也认识,也可以反序列化成功。基于此,可以绕过诸如\0字符的过滤。

方法三:构造方法赋值

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

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

相关文章

Heygen注册不了?试试这两种方法!

随着数字媒体发展&#xff0c;视频内容已成为传播信息的重要手段。然而&#xff0c;高质量的视频制作往往需要专业的技术知识和昂贵的制作成本。HeyGen平台&#xff0c;正是打破这一局限的创新工具。它不仅为视频创作者提供了一个全新的创作空间&#xff0c;更能极大程度地降低…

minio使用与注解事务管理

目录 一、minio启动 1、创建文件夹 2、cmd启动 3、查看端口地址以及密码 二、minio使用步骤 1、创建bucket&#xff0c;并且把Access Policy设置成public 2、代码 三、注解事务管理 一、minio启动 1、创建文件夹 2、cmd启动 3、查看端口地址以及密码 二、minio使用步…

uni-app开发日志:实现无限层级树形分类页面,通过schema2code生成代码并在此基础上完善修改list、add和edit页面

本文中省略很多开发说明&#xff0c;可能需有一定uniapp的实战基础的朋友才能看明白。 schema2code 生成的无限级分类页面只提供超简易版的功能&#xff0c;没有层级选择&#xff0c;只能自己填入父类ID&#xff0c;列表的时候也是全部显示&#xff0c;没有层级关系&#xff0c…

闲置物品交易平台网站商城-计算机毕设Java|springboot实战项目

&#x1f393; 作者&#xff1a;计算机毕设小月哥 | 软件开发专家 &#x1f5a5;️ 简介&#xff1a;8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 &#x1f6e0;️ 专业服务 &#x1f6e0;️ 需求定制化开发源码提…

WIFI 频段及信道简介

一、WiFi 三频AP规划信道时&#xff0c;建议分别采用2.4G、5.2G、5.8G频段可用信道。 2.4G频段&#xff1b;5.2G频段&#xff1b;5.8G频段。 1、中国5G WiFi频段 5.8GHz频段&#xff0c;中国开放只有149、153、157、161、165这5个信道&#xff1b; 其中可支持一组80MHz信道…

Linux 软件编程 数据库与网页

sqlite3数据库操作效率&#xff1a; 1.增加事务机制 2.关闭数据库磁盘同步写入 3.使用预处理SQL语句机制实现提升数据库效率 事务机制&#xff1a; 1.可以提高sqlite处理数据的效率 2.确保数据的一致性 关闭数据库中写同步机制&#xff1a; 在…

文献阅读:单细胞分辨率下小鼠大脑衰老的分子和空间特征

文献介绍 文献题目&#xff1a; Molecular and spatial signatures of mouse brain aging at single-cell resolution 研究团队&#xff1a; 庄小威&#xff08;美国哈佛大学&#xff09;、Catherine Dulac&#xff08;美国哈佛大学&#xff09; 发表时间&#xff1a; 2022-12…

具有手势识别的动捕设备——mHand Pro VR数据手套

数据手套是指通过手套内置的传感器&#xff0c;实时采集手部运动数据的动捕设备&#xff0c;通常被应用于虚拟仿真、虚拟现实vr交互、动画制作等领域。其中&#xff0c;基于惯性动作捕捉技术研发的数据手套&#xff0c;凭借其高性价比的优势&#xff0c;在市面上的应用更为广泛…

数据驱动的社交网络:分析Facebook的算法与用户体验

在现代社交网络中&#xff0c;Facebook以其庞大的用户基础和数据驱动的算法而著称。这些算法不仅决定了用户在平台上的体验&#xff0c;也深刻影响了他们与内容的互动方式。本文将深入分析Facebook的算法如何通过数据驱动优化用户体验&#xff0c;并探讨其在社交网络中的作用。…

图片合集

文章目录 线段树 8.23 线段树 8.23

企业网中网关的部署位置浅析

园区网网关部署位置 园区网络中的终端设备&#xff0c;想要访问外部的Internet&#xff0c;第一步首先要找自己的网关设备。然后通过网关设备再进入园区网内部进行数据路由。 一般园区网的网关部署方案有两类&#xff1a; 一、园区网关部署在汇聚层 如果把网关部署在汇聚交换…

安利一款企业都在用的Ser-U替代产品

Ser-U&#xff0c;这款历史悠久的FTP服务器软件&#xff0c;曾经在市场上占据着主导地位。然而&#xff0c;随着技术的不断进步&#xff0c;一些新兴的竞争对手开始崭露头角&#xff0c;比如镭速这样的替代品&#xff0c;正在逐渐成为企业的新宠。那么&#xff0c;企业为何要寻…

医院住院管理系统+vue

TOC ssm012医院住院管理系统vue 第1章 绪论 1.1背景及意义 随着社会的快速发展&#xff0c;计算机的影响是全面且深入的。人们生活水平的不断提高&#xff0c;日常生活中人们对医院住院管理系统方面的要求也在不断提高&#xff0c;随着医院住院管理系统受到广大用户的关注&…

CVPR 2024论文分享┆LMDrive:基于大模型的闭环端到端自动驾驶

论文简介 本推文主要介绍2024 CVPR接收的一篇论文《LMDrive: Closed-Loop End-to-End Driving with Large Language Models》&#xff0c;该论文提出了一种名为LMDrive的创新方法&#xff0c;展示了如何利用大型语言模型在自动驾驶系统中进行闭环的端到端驾驶控制。传统的自动…

用Python制作一个可以预测天气的程序(附代码)

要用Python制作一个简单的天气预报应用&#xff0c;你可以使用多种方法&#xff0c;但最常见和方便的是利用现有的天气API&#xff08;如OpenWeatherMap、Weatherbit、AccuWeather等&#xff09;。这里&#xff0c;我将以OpenWeatherMap为例&#xff0c;展示如何编写一个简单的…

pikachu SSRF通关(服务器端请求伪造)

开始闯关吧 一共有两关 第1关 SSRF(curl) 按照指示点击下图蓝色字体的链接 得到了下图地址栏里的带参数的url&#xff0c;参数名是url&#xff0c; PHP的curl PHP支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。 libcurl目前…

融合定位系统的误差与什么有关

在当今科技日新月异的时代&#xff0c;融合定位系统作为精准导航与定位的关键技术&#xff0c;广泛应用于智能手机、自动驾驶、无人机及智能物流等领域。然而&#xff0c;这一技术的准确性并非无懈可击&#xff0c;其误差来源复杂多样&#xff0c;深刻影响着定位精度与用户体验…

在线制作9png的好网站

https://inloop.github.io/shadow4android/ fook &#xff1a; https://github.com/inloop/shadow4android

常用科研工具(持续更新)

正所谓&#xff0c;工欲善其事,必先利其器。想要更好的做好科研&#xff0c;相应的科研工具必不可少。下面介绍一些科研工具。 1、Zotero 2、Watt ToolKit 3、paperwithcode 4、Typora 5、kaggle 1、文献管理 对于文献管理&#xff0c;必然少不了Zotero。之前看文献都是放在文…

Selenium与Web Scraping:自动化获取电影名称和评分的实战指南

背景/引言 在信息化高度发展的今天&#xff0c;获取数据的能力变得尤为重要。通过 Web Scraping&#xff0c;我们可以从动态网页中提取有价值的信息&#xff0c;例如在豆瓣电影中获取电影名称和评分。然而&#xff0c;随着网站反爬虫措施的不断增强&#xff0c;传统的抓取技术…