(实战)PHP文件包含漏洞

**摘要:**本篇主要带你实战了解PHP文件包含漏洞

文件包含漏洞(LFI/RFI)

  • 当代码里出现 include($_GET['file'])、require() 等,且参数可控时,就可以包含任意文件。

  • 如果包含的是 PHP 文件,默认会当作 PHP 代码执行,而不是显示源码。

目录

一、题目详情

二、解题思路及原理

1、有一个tips,好像可以点击,那我们点击看看情况。

2、提取源码

3、Base64解码


一、题目详情

题目来源:CTF²中的ACTF2020 新生赛Include

靶场环境:启动靶机,进入:http://ea133ffe4fdd6ee5d0a178a8.http-ctf2.dasctf.com:80


二、解题思路及原理

1、有一个tips,好像可以点击,那我们点击看看情况。

发现我们的url变了,后面变成了执行了一个flag.php源码!

这就是文件包含漏洞: 包含的是 PHP 文件,默认会当作 PHP 代码执行,而不是显示源码。

所以下面我们的解题思路,就是如何把和这个源码提取到,因为这个文件(php)本身就是flag,所以看到了这个文件(php)里面的内容(源码)也就能看到flag了!

2、提取源码

php://filter 伪协议:用于PHP 源码读取

  • PHP 内置的流包装器,用于对文件流做过滤/转换。

  • 语法:

    php://filter/读或写=过滤器/resource=目标文件

  • 常用过滤器:

    • convert.base64-encode:把内容做 Base64 编码

    • convert.base64-decode:解码

    • string.rot13:ROT13 变换(ROT13是一种编码方式)

    • zlib.deflate / zlib.inflate:压缩/解压

这里我们采用Base64编码去提取PHP源码

  • 直接包含 flag.php 会执行 PHP 代码,页面只显示执行结果,看不到源码。

  • 用 convert.base64-encode 后,PHP 引擎读到的是 Base64 字符串,不会被当作 PHP 代码执行,于是源码被原样输出。

  • 你拿到 Base64 字符串后,解码就能看到 flag.php 的源代码,里面往往就有 flag。

我们构造如下url参数,然后去拼接到url后面。

复制代码
?file=php://filter/read=convert.base64-encode/resource=flag.php

结果如下:

页面上这串字符就是这个文件源码,但是被我们的进行了Base64编码了,所以下面对这串字符进行Base64解码就行。

3、Base64解码

这里采用在线的Base64解码器:Base64 在线编码解码 | Base64 加密解密 - Base64.us

结果如下:

好了,这里看到了Flag!

**PS:**其实这个还算是一个比较简单的PHP文件包含,这里没有涉及到过滤。如果过滤了相应的东西,需要采用相应的方式绕过。如:可以尝试大小写、双写、URL 编码等绕过方式!

相关推荐
4SAPI8 小时前
多模态 AI 应用统一接入网关生产选型指南:4SAPI、硅基流动与 OpenRouter 的架构权衡
大数据·人工智能·架构·php·1024程序员节
admin and root8 小时前
《神农安全.AI漏洞挖掘src赏金》单独开放!
安全·web安全·网络安全·数据挖掘·渗透测试·ai安全·白帽子黑客
学逆向的8 小时前
C++ 匿名命名空间
开发语言·c++·网络安全
4SAPI9 小时前
营销内容生成大模型 API 生产选型指南:4SAPI、硅基流动与 OpenRouter 的架构权衡
数据库·人工智能·架构·php
菩提小狗10 小时前
每日安全情报报告 · 2026-10-27
网络安全·漏洞·cve·安全情报·每日安全
迪康Defender10 小时前
PHP 高危漏洞应急分析:从风险原理到端点侧纵深防护
运维·开发语言·安全·自动化·php·运维开发·远程工作
躺柒10 小时前
读数据安全架构设计与实践16安全架构案例(上)
安全·php·零信任·安全架构·防火墙·无边界
学逆向的11 小时前
C++ 别名命名空间
开发语言·c++·网络安全
fengci.12 小时前
CTF2刷题记录(困难部分)
android·开发语言·前端·学习·php
vipxieliang12 小时前
PHP OPcache 原理与配置:字节码缓存、参数调优、失效机制与性能影响
php