14,攻防世界Web_php_unserialize

news2024/12/24 14:44:21

917e8f539c2640db89dd6aa9bba58c26.png

进入场景

35a7691b825b413699301615f473fdf8.png

看见代码,解析一下

这段PHP代码定义了一个名为Demo的类,并演示了如何通过URL参数进行反序列化和文件高亮显示的功能,同时也包含了一些安全措施以防止对象注入攻击。下面是对这段代码的逐行解释:

1.<php 开始PHP代码。

2.class Demo { 定义了一个名为Demo的类。

3.private f i l e = ′ i n d e x . p h p ′ ; 在 D e m o 类中定义了一个私有属性 file = 'index.php'; 在Demo类中定义了一个私有属性 file=index.php;Demo类中定义了一个私有属性file,并初始化为’index.php’。这意味着这个属性只能在类的内部被访问和修改。

4.public function __construct(KaTeX parse error: Expected '}', got 'EOF' at end of input: …了类的构造函数,它接受一个参数file。

5.$this->file = f i l e ; 在构造函数中,将传入的 file; 在构造函数中,将传入的 file;在构造函数中,将传入的file参数值赋给类的私有属性$file。

6.} 结束构造函数。

7.function __destruct() { 定义了类的析构函数,当对象被销毁时自动调用。

8.echo @highlight_file( t h i s − > f i l e , t r u e ) ; 使用 h i g h l i g h t _ f i l e 函数高亮显示 this->file, true); 使用highlight\_file函数高亮显示 this>file,true);使用highlight_file函数高亮显示this->file指定的文件内容,并输出。@符号用于抑制可能出现的错误或警告。

9.} 结束析构函数。

10.function __wakeup() { 定义了__wakeup方法,这是一个魔术方法,在对象被反序列化时自动调用。

11.if (KaTeX parse error: Expected '}', got 'EOF' at end of input: …ndex.php') { 检查file属性是否不等于’index.php’。

12. t h i s − > f i l e = ′ i n d e x . p h p ′ ; 如果 this->file = 'index.php'; 如果 this>file=index.php;如果file属性不等于’index.php’,则将其重置为’index.php’。

13.} 结束__wakeup方法。

14.} 结束Demo类。

15.if (isset($_GET[‘var’])) { 检查URL参数中是否存在var。

16. v a r = b a s e 64 _ d e c o d e ( var = base64\_decode( var=base64_decode(_GET[‘var’]); 将var参数的值进行Base64解码。

17.if (preg_match(‘/[oc]:d+:/i’, $var)) { 使用正则表达式检查解码后的字符串是否包含类似序列化对象的模式(例如O:数字:…或C:数字:…)。这是一种简单的安全措施,用于防止对象注入攻击。

18.die(‘stop hacking!’); 如果检测到可能的对象注入攻击,则终止脚本执行。

19.} else { 如果没有检测到攻击。

20.@unserialize( v a r ) ; 尝试反序列化 var); 尝试反序列化 var);尝试反序列化var。@符号用于抑制可能出现的错误或警告。

21.} 结束else块。

22.} else { 如果URL参数中没有var。

23.highlight_file(“index.php”); 直接高亮显示当前文件(index.php)。

24.} 结束if-else结构。

25.> 结束PHP代码。

根据分析,我们要绕过unserialize函数、preg—match函数、wakeup函数、解码函数

写个PHP代码运行一下,传给var

PHP序列化和反序列化 - 爱资料工具

<?php
class Demo {?
? ? private $file = 'fl4g.php';
}
$a = serialize(new Demo);
$a = str_replace('O:4', 'O:+4',$a); ? ? ? //绕过preg_match()函数
$a = str_replace(':1:', ':2:',$a); ? ? ? ?//绕过__wakeup()函数
echo base64_encode($a); ? ? ? ? ? ? ? ? ? //绕过解码函数
?>

在PHP的序列化字符串中,对象通常以“O:”开头,后面跟着对象的类名长度、类名字符串、以及对象属性的序列化表示。

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

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

相关文章

基于NodeMCU的物联网窗帘控制系统设计

最终效果 基于NodeMCU的物联网窗帘控制系统设计 项目介绍 该项目是“物联网实验室监测控制系统设计&#xff08;仿智能家居&#xff09;”项目中的“家电控制设计”中的“窗帘控制”子项目&#xff0c;最前者还包括“物联网设计”、“环境监测设计”、“门禁系统设计计”和“小…

【Linux开发工具】自动化构建-make/Makefile

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;Linux &#x1f339;往期回顾&#x1f339;&#xff1a;【Linux开发工具】gcc和g &#x1f516;流水不争&#xff0c;争的是滔滔不 一、make和Makefile简介1.1 什么是…

Elasticsearch安装和数据迁移

Elasticsearch安装和数据迁移 Elasticsearch安装 下载并解压Elasticsearch 首先下载Elasticsearch的tar.gz文件&#xff0c;并将其解压&#xff1a; wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.8.2-linux-x86_64.tar.gz tar -xzf elastics…

dockerfile文档编写(1):基础命令

目录 Modelscope-agentARGFROMWORKDIRCOPYRUNENVCMD run_loopy Modelscope-agent ARG BASE_IMAGEregistry.cn-beijing.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py310-torch2.1.2-tf2.14.0-1.12.0FROM $BASE_IMAGEWORKDIR /home/workspaceCOPY . /hom…

【论文阅读笔记】Learning to sample

Learning to sample 前沿引言方法问题声明S-NET匹配ProgressiveNet: sampling as ordering 实验分类检索重建 结论附录 前沿 这是一篇比较经典的基于深度学习的点云下采样方法 核心创新点&#xff1a; 首次提出了一种学习驱动的、任务特定的点云采样方法引入了两种采样网络&…

置换密码程序设计

实验目的与要求 1. 帮助学生掌握置换密码的加密解密过程&#xff0c;能够利用所学过的编程语言&#xff0c;实现加解密算法。使学生掌握编程实现实际问题中的方法&#xff0c;提高专业技能和专业素养。 2. 要求学生掌握算法的程序实现的方法,能应用密码算法的特点&#xff0c…

Android修行手册 - 移动端几种常用动画方案对比

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

【计算机视觉基础CV-图像分类】03-深度学习图像分类实战:鲜花数据集加载与预处理详解

本文将深入介绍鲜花分类数据集的加载与处理方式&#xff0c;同时详细解释代码的每一步骤并给出更丰富的实践建议和拓展思路。以实用为导向&#xff0c;为读者提供从数据组织、预处理、加载到可视化展示的完整过程&#xff0c;并为后续模型训练打下基础。 前言 在计算机视觉的深…

Windows查看MD5

如何在Windows&#xff0c;查看一个文件的MD5 1、ctrlr&#xff0c;输入cmd 2、执行命令certutil -hashfile 文件路径&#xff08;按住将文件拖进来就行&#xff09; MD5 3、执行命令certutil -hashfile 文件路径&#xff08;按住将文件拖进来就行&#xff09;SHA1 可查看SHA…

【优化算法】莲花效应优化算法(LEA):一种基于莲花自然启发的工程设计优化算法

目录 1.摘要2.算法原理3.结果展示4.参考文献5.代码获取 1.摘要 本文提出了一种新的进化算法——莲花效应算法&#xff08;LEA&#xff09;&#xff0c;该算法结合了蜻蜓算法中的高效操作算子&#xff0c;例如蜻蜓在花朵授粉中的运动方式用于探索&#xff0c;以及水在花叶上的自…

Next.js v15 - 服务器操作以及调用原理

约定 服务器操作是在服务器上执行的异步函数。它们可以在服务器组件和客户端组件中调用&#xff0c;用于处理 Next.js 应用程序中的表单提交和数据修改。 服务器操作可以通过 React 的 “use server” 指令定义。你可以将该指令放在 async 函数的顶部以将该函数标记为服务器操…

DataV的安装与使用(Vue3版本)

1、DataV(vue3)地址&#xff1a;DataV Vue3TSVite版 | DataV - Vue3 2、使用 npm install kjgl77/datav-vue3 安装 3、全局引入。 4、此时就可以按需使用了~

隐藏指定文件/文件夹和自动提示功能消失解决方案

一. 隐藏指定文件/文件夹 Idea中隐藏指定文件或指定类型文件 Setting → File Types → Ignored Files and Folders输入要隐藏的文件名&#xff0c;支持*号通配符回车确认添加 二. 自动提示功能消失解决方案 指定SpringBoot配置文件 File → Project Structure → Facets选…

Echarts连接数据库,实时绘制图表详解

文章目录 Echarts连接数据库&#xff0c;实时绘制图表详解一、引言二、步骤一&#xff1a;环境准备与数据库连接1、环境搭建2、数据库连接 三、步骤二&#xff1a;数据获取与处理1、查询数据库2、数据处理 四、步骤三&#xff1a;ECharts图表配置与渲染1、配置ECharts选项2、动…

Springboot应用开发:配置类整理

目录 编写目的 一、线程池 1.1 setCorePoolSize 1.2 setMaxPoolSize 1.3 setQueueCapacity 1.4 setKeepAliveSeconds 1.5 setThreadNamePrefix 1.6 setRejectedExecutionHandler 1.7 示例代码 二、Durid数据库连接池 2.1 ServletRegistrationBean 2.2 FilterRegist…

AI新书推荐:深度学习和大模型原理与实践(清华社)

本书简介 在这个信息爆炸、技术革新日新月异的时代&#xff0c;深度学习作为人工智能领域的重要分支&#xff0c;正引领着新一轮的技术革命。《深度学习和大模型原理与实践》一书&#xff0c;旨在为读者提供深度学习及其大模型技术的全面知识和实践应用的指南。 本书特色在于…

java如何使用poi-tl在word模板里渲染多张图片

1、poi-tl官网地址 http://deepoove.com/poi-tl/ 2、引入poi-tl的依赖 <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.1</version></dependency>3、定义word模板 释义&#xf…

电力通信规约-104实战

电力通信规约-104实战 概述 104规约在广泛应用于电力系统远动过程中&#xff0c;主要用来进行数据传输和转发&#xff0c;本文将结合实际开发实例来讲解104规约的真实使用情况。 实例讲解 因为个人技术栈是Java&#xff0c;所以本篇将采用Java实例来进行讲解。首先我们搭建一…

linux socket编程之udp_dict_serve服务端--引入配置文件

注意&#xff1a;本篇博客只是对上一篇博客功能的增加 1.创建配置文件(翻译) Dict.txt apple: 苹果 banana: 香蕉 cat: 猫 dog: 狗 book: 书 pen: 笔 happy: 快乐的 sad: 悲伤的 run: 跑 jump: 跳 teacher: 老师 student: 学生 car: 汽车 bus: 公交车 love: 爱 hate: 恨 hell…

stm32定时器输出比较----驱动步进电机

定时器输出比较理论 OC(Output Compare)输出比较输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形每个高级定时器和通用定时器都拥有4个输出比较通道高级定时器的前3个通道额外拥有死区生成和互补输出…