ctf之文件包含——你的秘密我知道

admin 2026-04-18 07:44:45 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文档详细介绍了文件包含漏洞的类型及利用方法,涵盖本地与远程文件包含漏洞原理、绕过技巧及常见攻击方式。文章指出文件包含可执行任意代码,常被用于获取webshell,列举了PHP中相关函数的区别及漏洞演示代码。同时介绍了路径遍历、截断绕过等实用技巧,并提供多种协议如file://、php://等伪协议利用方法,建议开发人员加强输入验证与文件包含限制。 综合评分: 95 文章分类: WEB安全,漏洞分析,CTF,渗透测试,实战经验


cover_image

ctf之文件包含——你的秘密我知道

原创

书中自有代码来 书中自有代码来

书中自有代码来

2026年4月15日 16:38 四川

在小说阅读器读本章

去阅读

一、什么是文件包含

文件包含可以直接执行被包含文件中的代码,包含的文件格式是不受限制的,只要能正常执行即可。文件包含又分为本地文件包含(Local file include)和远程文件包含(Rmote file include),不管是哪种都是非常高危的,渗透过程中文件包含漏洞大多可以直接利用获取webshell。在php中,一般使用这些函数:include(), include_once(), require(), require_once(),它们之间的区别在于: include()和include_once()在包含文件时即使遇到错误,下面的代码依然会执行;而require()和require_once()则会直接报错退出程序。

二、包含文件的位置

(一)本地文件包含

漏洞演示

本地文件包含,顾名思义就是包含本地的文件,即相对于对方服务器的本地,目标服务器上。

漏洞代码示例:

<?&nbsp;php
&nbsp; &nbsp;&nbsp;$file&nbsp;=$_GET['file'];//GET方式获取参数
&nbsp; &nbsp;&nbsp;include($file);//包含该文件
?>

这是个典型的本地包含漏洞,并没有限制后缀,可以包含任意格式的文件,利用”../”可以跨目录,另外如果包含的文件非php可执行代码,会把文件内容打印出来。

访问链接是:

http://xxx.xxx.xxx/web3/index.php?file=tips.php

绝对路径和相对路径的区别:

| 特性 | 绝对路径 | 相对路径 | | — | — | — | | 定义 | 从文件系统的根目录盘符开始的完整路径。 | 从当前文件当前工作目录开始的路径。 | | 特点 | 定位精准,不受当前文件位置影响,但灵活性较低。 | 灵活,但容易因当前目录改变而失效(如文件嵌套时)。 | | 示例 | Windows: C:\Windows\System32\ Linux: /var/www/html/index.php | ./index.php ../config.php web/index.php |

. 代表当前目录,.. 代表上级目录

本地文件包含漏洞可以帮助攻击者获取webshell。

绕过技巧

  1. 限制访问目录时,使用相对路径跳转到指定目录,使用绝对目录时会报错。
  2. 限制包含的文件名时,可以在包含文件名后面加上%00隔断,但该方法只支持PHP<5.3且magic_quotes_gpc = Off,即使用php中字符的结束标识符来截断字符串。
  3. 通过加长url来实现自动截断,但部分服务器可能已有应对策略,但一般情况下,Windows下240个”.”,Linux下4096个”./”就可以。

(二)远程文件包含

当服务器满足前面本地文件包含的条件并打开allow_url_fopen选项和allow_url_include这两个选项时,可以使用远程文件包含。

绕过技巧

  1. 在url后面加入?截断,因为”?”后面再加上任何内容都不会影响远程的txt文件输出。
  2. 伪协议

| 协议 | 描述 | 典型利用 | | — | — | — | | file:// | 访问本地文件系统 | 用于读取本地源码或敏感文件(如 file:///etc/passwd) | | http:// | 访问 HTTP(s) 网址 | 用于远程文件包含 | | ftp:// | 访问 FTP(s) URLs | 用于远程文件包含 | | php:// | 访问各个输入/输出流 | php://filter/read=convert.base64-encode/resource=flag | | zlib:// | 压缩流 | 用于处理压缩数据 | | data:// | 数据(RFC 2397) | 用于直接执行数据流中的代码 | | glob:// | 查找匹配的文件路径模式 | 用于探测目录下的文件列表 | | phar:// | PHP 归档 | phar://zip文件名/shell名 ,PHP5.3后才加入此协议 | | ssh2:// | Secure Shell 2 | 用于 SSH 连接 | | rar:// | RAR | 用于访问 RAR 压缩包 | | ogg:// | 音频流 | 用于访问音频文件 | | expect:// | 处理交互式的流 | 用于执行系统命令(需开启相关扩展) |


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:书中自有代码来 书中自有代码来 书中自有代码来《ctf之文件包含——你的秘密我知道》

评论:0   参与:  0