当前位置: 首页 > article >正文

从一道CTF题深入理解PHP文件包含漏洞:绕过过滤与伪协议利用详解

从一道CTF题深入理解PHP文件包含漏洞绕过过滤与伪协议利用详解当你面对一个看似简单的CTF题目时可能不会想到它背后隐藏着如此丰富的安全知识。今天我们要解构的这个案例正是PHP文件包含漏洞的经典教学范例。通过这道题我们不仅能学到解题技巧更能深入理解Web应用安全的核心原理。1. 漏洞环境与代码审计基础在开始分析之前让我们先明确文件包含漏洞的基本概念。文件包含漏洞通常发生在应用程序动态包含文件时未能对用户输入进行充分验证的情况下。PHP中常见的文件包含函数包括include、require、include_once和require_once。观察题目提供的PHP代码片段error_reporting(0); $file $_GET[file]; if(strpos($file, ../) ! false || strpos($file, tp) ! false || strpos($file, input) ! false || strpos($file, data) ! false){ echo Oh no!; exit(); } include($file);这段代码有几个关键点需要注意error_reporting(0)关闭了所有错误报告这使得攻击者更难通过错误信息获取系统内部细节$_GET[file]直接从URL参数获取文件路径这是典型的安全隐患黑名单过滤检查了../、tp、input、data等关键词include函数最终执行文件包含操作常见文件包含漏洞利用方式对比表利用方式描述本例是否适用目录遍历使用../跳转目录被过滤绝对路径直接指定系统文件路径可能适用日志注入包含access.log等日志文件可能适用PHP伪协议使用php://等协议主要突破点2. 黑名单过滤机制的局限性与绕过题目中设置了四类关键词过滤看似提供了基本防护但实际上存在明显缺陷路径遍历过滤不完整仅过滤了../但未考虑..\Windows路径未过滤....//等变形形式未检查编码后的payload如%2e%2e%2f协议过滤的不足tp过滤试图阻止http://但可能误伤合法字符未过滤其他危险协议如expect://、phar://大小写变体未被考虑如PHP://缺乏白名单验证最佳实践应只允许特定目录下的特定文件类型缺少文件扩展名检查绕过技巧示例使用php://filter代替被过滤的php://input尝试协议名称大小写混合PHP://filter双重编码特殊字符3. PHP伪协议的深度解析与利用PHP伪协议是文件包含漏洞中最强大的武器之一。让我们重点分析题目中使用的php://filter协议。3.1 php://filter工作原理php://filter是一种元数据过滤器可以在数据流打开时应用各种过滤器。其基本语法为php://filter/read过滤器链/resource要读取的文件在本题中攻击者使用了php://filter/readconvert.base64-encode/resourceflag.php这个payload的工作流程打开flag.php文件将文件内容通过base64编码过滤器输出编码后的内容为什么需要base64编码当直接包含flag.php时PHP会将其作为代码执行而我们只想读取其内容。base64编码可以避免PHP代码被执行将二进制数据转换为可安全传输的ASCII字符绕过某些内容检查机制3.2 其他有用的过滤器组合除了base64编码php://filter还支持多种过滤器// 字符串旋转ROT13 php://filter/readstring.rot13/resourceflag.php // 多过滤器链式调用 php://filter/readstring.toupper|string.rot13/resourceflag.php // 压缩数据 php://filter/readzlib.deflate/resourceflag.php3.3 写入利用的filter用法php://filter不仅可以读取还能用于写入时转换数据// 写入经过base64解码的内容 php://filter/writeconvert.base64-decode/resourceshell.php这个特性在某些特殊场景下可用于构造webshell。4. 其他伪协议的利用场景虽然题目中过滤了几个关键协议但了解完整的PHP伪协议家族对安全研究至关重要。4.1 php://input的妙用php://input允许读取原始的POST数据。虽然本题中被过滤但在其他场景下POST /vuln.php?filephp://input HTTP/1.1 ... ?php system(id); ?4.2 data://协议的危险性data://协议可将任意内容作为文件包含data://text/plain,?php phpinfo();? data://text/plain;base64,PD9waHAgc3lzdGVtKCdpZCcpOz84.3 phar://的反序列化利用phar协议不仅能包含文件还能触发反序列化操作phar:///path/to/phar.phar/internal/file结合精心构造的phar文件可实现更复杂的攻击。5. 防御策略与安全开发建议理解了攻击手段后我们更应关注如何防御这类漏洞。以下是几种有效的防护措施避免动态文件包含如必须使用应严格限制可包含的文件范围使用白名单而非黑名单安全配置建议// 示例安全配置 $allowed [safe_file1.php, safe_file2.php]; if(in_array(basename($file), $allowed)) { include(__DIR__./includes/.$file); }服务器层面防护设置open_basedir限制文件访问范围禁用危险的PHP协议allow_url_includeOff代码审计要点检查所有用户输入作为文件路径的情况特别注意include/require系列函数的使用验证文件路径前先规范化realpath在实际开发中我曾遇到过一个案例即使使用了白名单验证开发者忽略了路径遍历符号可能出现在文件名中导致防御被绕过。这提醒我们安全验证必须全面考虑各种边界情况。

相关文章:

从一道CTF题深入理解PHP文件包含漏洞:绕过过滤与伪协议利用详解

从一道CTF题深入理解PHP文件包含漏洞:绕过过滤与伪协议利用详解 当你面对一个看似简单的CTF题目时,可能不会想到它背后隐藏着如此丰富的安全知识。今天我们要解构的这个案例,正是PHP文件包含漏洞的经典教学范例。通过这道题,我们不…...

保姆级教程:在STM32CubeIDE环境下配置TCA9548A I2C多路复用器,附完整工程代码

STM32CubeIDE实战:TCA9548A多路I2C系统开发全流程解析 在嵌入式系统设计中,I2C总线因其简洁的两线制结构被广泛应用,但当需要连接多个相同地址的从设备时,总线扩展成为刚需。TCA9548A作为一款I2C多路复用器,能够将单一…...

SpringBoot + JAIN-SIP 实战:手把手教你搭建国标GB28181摄像头管理后台(附完整代码)

SpringBoot与JAIN-SIP构建国标GB28181平台实战指南 1. 国标视频监控平台的技术架构解析 GB28181标准作为国内视频监控领域的核心协议,定义了设备互联的完整规范体系。这套标准主要包含三个关键组成部分: SIP信令控制层:负责设备注册、会话…...

老项目复活指南:一招解决Android Studio或Flutter因Gradle版本过旧引发的SSL连接错误

老项目复活指南:一招解决Android Studio或Flutter因Gradle版本过旧引发的SSL连接错误 接手一个尘封多年的Android或Flutter项目时,开发者常会遇到一个令人头疼的问题:Gradle构建过程中突然抛出javax.net.ssl.SSLException: Connection reset错…...

实测对比:Jetson NX上CUDA加速的OpenCV vs 默认版本,性能提升到底有多大?

Jetson NX上CUDA加速的OpenCV性能实测:从理论到实践的全面对比 在边缘计算领域,Jetson Xavier NX凭借其强大的GPU性能成为计算机视觉项目的理想平台。但很多开发者可能没有意识到,默认安装的OpenCV其实并未启用CUDA加速功能,这意味…...

debian12安装GCC15

debian12安装GCC15 前几天想把boost里面的占位写替换成fmt::format,结果format非要依赖第三方库,还需要vcpkg,而且c的vcpkg包管理真的太烂了,和golang差距比天大,最后看到C20里面是有format包集成了,但是需…...

别再只盯着电感了!聊聊手机快充和LED驱动里,那颗‘会飞’的电容是怎么把电压‘泵’上去的

手机快充背后的隐形功臣:揭秘电荷泵如何用一颗电容实现高效升压 当你的手机在半小时内从0%充到80%时,背后隐藏着一项被大多数人忽视的黑科技——电荷泵。这种没有电感、仅靠电容"飞行"来传递能量的DC-DC转换器,正在悄然改变消费电子…...

从PyTorch自定义算子到CUDA 13原生kernel:5步完成端到端性能提效3.8倍,金融风控场景已验证

更多请点击: https://intelliparadigm.com 第一章:从PyTorch自定义算子到CUDA 13原生kernel:5步完成端到端性能提效3.8倍,金融风控场景已验证 在高频信贷评分与实时反欺诈推理中,传统 PyTorch CPU/GPU 混合调度常因 k…...

不只是数据通道:用TMS320F28374S的CLB X-BAR和ePWM X-BAR设计灵活的保护与同步逻辑

TMS320F28374S的X-BAR系统:构建高可靠性实时控制架构的神经中枢 在工业电机驱动和数字电源系统中,毫秒级的延迟可能导致灾难性后果。当电流传感器检测到过载信号时,系统需要在微秒级别内切断PWM输出,同时触发保护逻辑链。传统的中…...

别再让数据库扛下所有:用Memcached给MySQL减负的5个实战场景与配置要点

从MySQL到Memcached:高并发场景下的缓存实战手册 当你的电商网站在大促期间突然变慢,数据库监控面板上的CPU使用率飙升至红线,这往往意味着关系型数据库正在承受它本不该承受的压力。Memcached作为一款久经考验的内存缓存系统,能在…...

避坑指南:在Proteus8中仿真51单片机红外通信(IRLINK)时,如何解决载波频率和协议解析的那些坑?

Proteus8仿真51单片机红外通信的五大核心陷阱与精准解决方案 当你在深夜调试Proteus8中的51单片机红外通信项目时,示波器上那些杂乱无章的波形是否曾让你陷入绝望?IRLINK模块看似简单,却暗藏诸多玄机。本文将从五个关键维度,解剖那…...

告别手动拖拽!用Lumerical脚本批量搭建FDTD仿真结构(附完整代码)

告别手动拖拽!用Lumerical脚本批量搭建FDTD仿真结构(附完整代码) 在光子学仿真领域,时间就是创新的货币。当你在凌晨三点反复调整第37个纳米柱的旋转角度时,是否想过:那些本应用于突破性思考的精力&#xf…...

d2s-editor:暗黑破坏神2存档编辑器的终极免费解决方案

d2s-editor:暗黑破坏神2存档编辑器的终极免费解决方案 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor d2s-editor是一款基于Web的暗黑破坏神2存档编辑器,专为《暗黑破坏神2》玩家和模组开发者设计&#x…...

Linux服务器上配置vsftpd被动模式(PASV)的完整避坑指南:从端口范围到防火墙规则

Linux服务器vsftpd被动模式(PASV)全链路配置实战:从原理到防火墙策略 FTP服务在企业内部文件传输场景中始终占据重要地位,而vsftpd作为Linux平台最安全的FTP守护进程,其被动模式(PASV)的配置问题…...

如何区分网络延迟、抖动并针对性优化?

在住宅代理的实际应用中,网络连接的稳定性和响应速度直接影响业务效率。准确识别延迟与抖动的差异,是进行有效网络优化的前提。 网络延迟与抖动的核心区别 住宅代理场景中,网络延迟指数据包经代理节点往返目标服务器的平均耗时(单…...

从一次线上BUG复盘说起:strict-origin-when-cross-origin如何影响你的第三方登录与支付回调

从一次线上BUG复盘说起:strict-origin-when-cross-origin如何影响你的第三方登录与支付回调 那天凌晨2点,我被一连串报警短信惊醒——支付回调接口突然大面积失败。用户完成微信支付后,系统无法正确跳转回订单详情页,而是不断重定…...

必要软件安装

vscode:https://vscode.js.cn/Download node.js:https://nodejs.org/zh-cn git:https://blog.csdn.net/mukes/article/details/115693833 cann:https://gitcode.com/cann/runtime...

AD9371裸机程序里那些容易配错的坑:SPI片选、SYSREF与时钟链详解

AD9371裸机开发实战:SPI片选、时钟链与SYSREF配置避坑指南 当你在深夜的实验室里盯着示波器上杂乱的信号波形,AD9371评估板依然 stubbornly 保持沉默——这种场景对射频工程师来说再熟悉不过。作为一款高性能集成收发器,AD9371的裸机程序配置…...

用零刻EQ12打造家庭网络中枢:iKuai主路由+OpenWrt旁路由+黑群晖的ESXi8.0实战配置

零刻EQ12 N100家庭网络中枢:ESXi8.0下的多系统协同实战 在智能家居设备爆发式增长的今天,传统路由器已难以满足高清视频串流、智能设备联动、家庭云存储等复合需求。零刻EQ12凭借N100处理器的低功耗特性(基础TDP仅6W)和双Intel i…...

避坑指南:PX4 Gazebo仿真相机图像收不到?可能是UDP端口冲突了

PX4 Gazebo仿真中相机图像丢失的深度排查指南 当你在PX4 Gazebo仿真环境中添加了相机模块,却发现无法通过ROS话题接收到图像数据时,这种问题往往令人沮丧。本文将从实际案例出发,带你深入理解问题根源,并提供一套完整的排查方法论…...

别再只用jstack了!JDK自带的JMC(Java Mission Control)实战:5分钟搞定线上应用性能监控与JFR分析

别再只用jstack了!JDK自带的JMC实战:5分钟搞定线上性能监控与JFR分析 当线上Java应用突然出现CPU飙高、内存泄漏或频繁GC时,大多数开发者的第一反应是打开终端输入jstack。但面对生产环境复杂的性能问题,仅靠线程快照就像用听诊器…...

智能机器人赋能锂电智造:工业场景化应用与落地实践—— 成都数智碳合机器人智能取送样系统,重塑锂电材料样品转运新生态

一、行业痛点:锂电材料生产的“转运之困”在新能源锂电池材料产业高速发展的当下,样品送样作为连接生产现场与质量检测的关键环节,正成为制约企业提质增效、保障安全的核心瓶颈。传统人工送样模式,已难以适配锂电材料企业大规模、…...

RK3588 MIPI屏幕点不亮?别慌!用这份DTS屏参调试清单快速排错

RK3588 MIPI屏幕点不亮?这份DTS屏参调试清单帮你快速定位问题 当RK3588开发板连接MIPI屏幕后出现黑屏、花屏或闪屏时,多数开发者会首先怀疑屏幕硬件故障。但根据实际项目经验,80%的显示问题都源于DTS配置参数与屏幕规格不匹配。本文将带你建…...

从问题到解决方案:AB Download Manager插件开发的架构思维与实践指南

从问题到解决方案:AB Download Manager插件开发的架构思维与实践指南 【免费下载链接】ab-download-manager A Download Manager that speeds up your downloads 项目地址: https://gitcode.com/GitHub_Trending/ab/ab-download-manager AB Download Manager…...

告别纯Client模式:手把手教你用CANoe的NetWork Node搭建一个实时监控Server

从被动监听转向主动响应:基于CANoe NetWork Node的车载实时监控系统实战 在传统车载网络测试中,工程师们往往将CANoe作为被动监听工具,通过Trace窗口观察总线数据流。这种"只读"模式虽然能满足基础测试需求,但当面对需要…...

高精度霍尔电流传感器在高压功率系统中的应用

摘要随着新能源汽车、光伏逆变器、储能系统以及工业自动化的发展,功率电子系统正向更高功率密度和更高效率方向发展。在这些系统中,电流检测不仅用于系统控制,还承担着保护、监测和能量管理等重要功能。传统电流检测方案在高压应用中通常需要…...

PotPlayer智能字幕翻译终极体验:告别外语观影障碍的完整解决方案

PotPlayer智能字幕翻译终极体验:告别外语观影障碍的完整解决方案 【免费下载链接】PotPlayer_Subtitle_Translate_Baidu PotPlayer 字幕在线翻译插件 - 百度平台 项目地址: https://gitcode.com/gh_mirrors/po/PotPlayer_Subtitle_Translate_Baidu 还在为看不…...

springboot大学生校园跑腿服务系统的设计与实现沙箱支付

目录同行可拿货,招校园代理 ,本人源头供货商沙箱支付功能分析支付接口集成订单状态同步模拟异常场景安全风控措施测试验证流程单元测试覆盖端到端测试性能压力测试扩展性设计多支付渠道隔离分布式事务处理项目技术支持源码获取详细视频演示 :文章底部获取博主联系方…...

Java的@IntrinsicCandidate:JVM内建函数优化

Java的IntrinsicCandidate:JVM内建函数优化 在Java性能优化的世界里,JVM通过内建函数(Intrinsics)将关键方法调用替换为高度优化的本地代码,从而显著提升执行效率。而JDK 9引入的IntrinsicCandidate注解,正…...

RePKG:5分钟掌握Wallpaper Engine PKG提取与TEX转换的终极指南

RePKG:5分钟掌握Wallpaper Engine PKG提取与TEX转换的终极指南 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 你是否曾经面对Wallpaper Engine中精美的动态壁纸资源&am…...