章节1:PHP反序列化渗透与防御

news2024/11/17 17:30:33

章节1:PHP反序列化渗透与防御

1.1-PHP类与对象

类Class

一个共享相同结构和行为的对象的集合。

在这里插入图片描述

对象Object

类的实例

在这里插入图片描述

在这里插入图片描述

1.2-PHP Magic函数

Magic Methods

https://www.php.net/__sleep

在这里插入图片描述

函数作用

函数作用
__construct当一个对象创建时被调用
__destruct当一个对象销毁时被调用
__toString当一个对象被当作一个字符串使用
__sleep在对象被序列化之前运行
__wakeup在对象被反序列化之后被调用
__serialize()对对象调用serialize()方法,PHP 7.4.0起
__unserialize()对对象调用unserialize()方法,PHP 7.4.0起
__call()在对象上下文中调用不可访问的方法时触发
__callStatic()在静态上下文中调用不可访问的方法时触发
__get()用于从不可访问的属性读取数据
__set()用于将数据写入不可访问的属性
__isset()在不可访问的属性上调用isset()或empty()触发
__unset()在不可访问的属性上使用unset()触发
__invoke()当脚本尝试将对象调用为函数时触发

可以了解下最后三个方法。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.3-PHP序列化与反序列化

序列化和反序列化

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

其他序列化格式

json字符串 json_encode

xml字符串 wddx_serialize_value

二进制格式

字节数组

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

https://www.bejson.com/otherformat/xmlsort/

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

var_dump:打印变量的相关信息

在这里插入图片描述

在这里插入图片描述

反序列化:注意

  1. 如果传递的字符串不可以序列化,则返回 FALSE

    在这里插入图片描述

  2. 如果对象没有预定义,反序列化得到的对象是__PHP_Incomplete_Class

    在这里插入图片描述

    在这里插入图片描述

作用

  1. 传输对象
  2. 用作缓存(Cookie、Session)

反序列化与Magic函数

__wakeup

__unserialize() (PHP 7.4.0)

如果类中同时定义了 __unserialize() 和 __wakeup() 两个魔术方法,则只有 __unserialize() 方法会生效,__wakeup() 方法会被忽略。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.4-反序列化漏洞的出现

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

反序列化漏洞

  1. unserialize函数的参数可控,比如通过GET请求传参(漏洞触发点)
  2. 脚本中定义了有Magic方法,方法里面有向php文件做读写数据或者执行命令的操作,比如__destruct()、unlink()
  3. 操作的内容需要有对象的成员变量的值,比如filename

常见利用函数

类别函数
命令执行exec()
passthru()
popen()
system()
……
文件操作file_put_contents()
file_get_contents()
unlink
……

1.5-CTF题目分析

题目地址

https://adworld.xctf.org.cn/challenges/list

类型:Web

难度:1

unserialize3

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.6-typecho反序列化漏洞

题目地址

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-18753

下载地址

https://github.com/typecho/typecho/releases/tag/v1.0-14.10.10-release

Source code(zip)

PHP版本: 5.4.5nts(PHPStudy)

在数据库新建一个库,命名为typecho

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Linux_红帽8学习笔记分享_10(SELinux管理与防火墙)

Linux_红帽8学习笔记分享_10(SELinux管理与防火墙) 文章目录 Linux_红帽8学习笔记分享_10(**SELinux管理与防火墙**)1.Linux系统的安全机制1.1 Filesystem1.2 Service1.3 Firewall1.4 SELinux 2.SElinux理论概述3.SElinux的配置文件3.1 SELINUX参数3.2 SELINUXTYPE参数 4.查看和…

网络安全行业职位解析:如何选择适合自己的职业发展路径?

前言 网络安全行业发展迅速,各种职位层出不穷,这给刚入门的小伙伴带来了很大的困惑:我应该选择哪个职位?如何才能在这个行业立足并获得高薪工作?如果你也有这些疑惑,那么恭喜你,来到了正确的地…

git push 上去的文件操作

先在git 创建一个仓库,仓库创建好后有一个快速上手的页面 注意第一个是你的登录账号和密码这个是账号和密码这个是你这个仓库的地址 接下来在你要上传的文件右键git bash here 进入 1. 先初始化进入 git init 2.再登录和输入你的密码登录好了,可以再初…

Java笔记_17(异常、File)

Java笔记_17 一、异常1.1、异常体系介绍1.2、编译时异常和运行时异常1.3、异常的作用1.4、异常的处理方式1.5、捕获异常的灵魂四问1.6、异常中的常见方法1.7、抛出处理1.8、异常-练习(键盘录入数据)1.9、自定义异常 二、File2.1、File的概述和构造2.2、F…

《Java虚拟机学习》 java代码的运行过程

1. Java文件转换 当我们保存java文件后,首先由编译器编译成class文件,然后通过Java虚拟机将class文件转换成字节码文件 2.Java虚拟机是怎么运行Java文件 首先将java文件加载到java虚拟机中,然后由虚拟机将类元信息存储在 虚拟机的方法区中。…

多态小Tips

目录 1.虚函数 2. 设置为虚函数 3.多态 4.多态类型的调用 5.抽象类和纯虚函数 6.虚表 7.练习题 1.虚函数 虚函数是被virtual修饰的类成员函数 virtual关键字只在声明时加上,在类外实现时不能加。 static和virtual不能同时使用。 2. 设置为虚函数 首先&#xff0c…

企业网盘选购攻略,如何选择最适合你的云存储服务?

在如今的企业办公中,每天都会产出各种不同类型的文件,传统纸质文件的管理方式,不仅不方便协作,而且容易丢失。于是企业将目光转向企业网盘工具,企业网盘的热门肯定了其在文件管理与协作方面的表现。那么企业网盘哪个好…

网络安全(非常详细)从零基础入门到精通,看完这一篇就够了。

学习网络安全方向会遇到哪些问题? 1.打基础的时间长 学基础花费了很长的时间,光学语言都有好几门,有的人会止步于学习linux系统及命令的路上,更多的人会停在学习语言上面; 2.知识点掌握的不够清楚 对于网络安全基础…

OpenPCDet系列 | 5.模型前向传播流程

文章目录 前向传播流程1. 模型初始化2. 模型训练前向传播前向传播流程 这里以PointPillars模型为例,在PointPillars模型中主要划分了以下4个主要的模块,以下某块首先会在build_network中进行初始化,然后在具体前向传播时通过forward函数进行。下面进行区分。 PointPillars…

TCP/IP网络编程(二)

TCP/IP网络编程读书笔记 第7章 优雅地断开套接字连接7.1 基于TCP的半关闭7.1.1 单方面断开连接带来的问题7.1.2 套接字和流(Stream)7.1.3 针对优雅断开的shutdown函数7.1.4 为何要半关闭7.1.5 基于半关闭的文件传输程序 7.2 基于Windows的实现7.3 习题 第…

揭秘|从帕丽斯·希尔顿引领其帝国进入元宇宙学到的品牌建设经验

你是否曾想过,元宇宙是如何与世界上的知名品牌和名人达成合作的?在本期的文章中,我们邀请了 11:11 媒体的 Web3 和元宇宙总监 Cynthia Miller,一起探讨帕丽斯希尔顿如何通过 Parisland 和 Cryptoween 将她的帝国带入 The Sandbox&…

嵌入式学习笔记——IIC通信

IIC通信 前言IIC概述通信特征物理拓扑结构IIC通信的流程IIC的特点: STM32的IIC通信GPIO模拟IICIIC的时序组成(主机对从机写入数据)1.起始信号2.器件地址与读写位3.从机应答信号5.传输的数据与结束信号 IIC的时序组成(主机对从从机…

MySQL调优系列(二)——数据类型优化

一、总则 1、更小的数据类型更好 应该尽量使用可以正确存储数据的最小数据类型,更小的数据类型通常更快,因为它们占用更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期更少,但是要确保没有低估需要存储的值的范围&#xff0c…

OpenCV中的图像处理3.1-3.3(三)色彩空间、几何变换、阈值处理

目录 3.1 改变色彩空间目标改变色彩空间对象跟踪如何找到HSV值来追踪?练习 3.2 图像的几何变换目标变换缩放平移旋转仿射变换透视变换其他资源 3.3 图像阈值处理目标简单的阈值处理自适应阈值处理Otsu的二值化Otsu的二值化是如何工作的?其他资源练习 翻译…

Netty基础(二)

1.Netty高性能架构设计 1.1.线程模型基本介绍 1>.不同的线程模式,对程序的性能有很大影响,为了搞清Netty线程模式,我们来系统的讲解下各个线程模式,最后看看Netty线程模型有什么优越性; 2>.目前存在的线程模型有: ①.传统阻塞I/O服务模型; ②.Reactor(反应器)模式; 3…

The Annotated Diffusion Model(翻译)

The Annotated Diffusion Model(翻译) 来源: https://huggingface.co/blog/annotated-diffusion code: 在这篇博文中,我们将更深入地研究去噪扩散概率模型(也称为 DDPM、扩散模型、基于分数的生成模型或简称为自动编…

一、PEMFC基础之热力学

一、PEMFC基础之热力学 1.内能U、焓H、熵S、吉布斯自由能G、赫姆霍兹自由能F关系图2.可逆电压与温度和压力的关系3.能斯特方程4.燃料电池效率 1.内能U、焓H、熵S、吉布斯自由能G、赫姆霍兹自由能F关系图 2.可逆电压与温度和压力的关系 标准状态可逆电压Er计算: E …

JAVA15新特性

JAVA15新特性 概述 2020年9月15日,java15正式发布,(风平浪静的一个版本)共有14个JEP,是时间驱动形式发布的第六个版本.相关文档: https://openjdk.java.net/projects/jdk/15/ 一个孵化器阶段,三个预览,两个废弃和两个移除 JAVA15参与企业 java各版本主要特征 JDK5 :enum 泛型…

【面试】面试官:说一下线程池7个参数的含义?

文章目录 前言一、参数1:corePoolSize二、参数2:maximumPoolSize三、参数3:keepAliveTime四、参数4:TimeUnit五、参数5:BlockingQueue六、参数6:ThreadFactory七、参数7:RejectedExecutionHandl…

5月1日启动|2023年CSC西部/地方合作项目即将申报

2023年国家留学基金委(以下简称CSC)西部地区人才培养特别项目(以下简称“西部项目”)及地方合作项目选派工作即将开始,为此知识人网小编整理出以下申请要点,提醒申请者注意。 一、可以申报的省份 1.西部项…