文章总结: 文档详细介绍了文件包含漏洞的类型及利用方法,涵盖本地与远程文件包含漏洞原理、绕过技巧及常见攻击方式。文章指出文件包含可执行任意代码,常被用于获取webshell,列举了PHP中相关函数的区别及漏洞演示代码。同时介绍了路径遍历、截断绕过等实用技巧,并提供多种协议如file://、php://等伪协议利用方法,建议开发人员加强输入验证与文件包含限制。 综合评分: 95 文章分类: WEB安全,漏洞分析,CTF,渗透测试,实战经验
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()则会直接报错退出程序。
二、包含文件的位置
(一)本地文件包含
漏洞演示
本地文件包含,顾名思义就是包含本地的文件,即相对于对方服务器的本地,目标服务器上。
漏洞代码示例:
<? php
$file =$_GET['file'];//GET方式获取参数
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.phpweb/index.php|
.代表当前目录,..代表上级目录
本地文件包含漏洞可以帮助攻击者获取webshell。
绕过技巧
- 限制访问目录时,使用相对路径跳转到指定目录,使用绝对目录时会报错。
- 限制包含的文件名时,可以在包含文件名后面加上%00隔断,但该方法只支持PHP<5.3且magic_quotes_gpc = Off,即使用php中字符的结束标识符来截断字符串。
- 通过加长url来实现自动截断,但部分服务器可能已有应对策略,但一般情况下,Windows下240个”.”,Linux下4096个”./”就可以。
(二)远程文件包含
当服务器满足前面本地文件包含的条件并打开allow_url_fopen选项和allow_url_include这两个选项时,可以使用远程文件包含。
绕过技巧
- 在url后面加入?截断,因为”?”后面再加上任何内容都不会影响远程的txt文件输出。
- 伪协议
| 协议 | 描述 | 典型利用 | | — | — | — | | 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之文件包含——你的秘密我知道》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论