剑庭安
首页
黑客安全首页全部安全栏目 黑客技术黑客技术、渗透测试、漏洞利用工具与教程 安全软件安全工具、扫描器、检测与审计软件 病毒分析恶意软件分析、样本、逆向与沙箱 CTF思路CTF 题目、writeup、解题思路与工具 防护思路防御技术、加固、检测响应与蓝队 红蓝攻防红队攻击模拟、蓝队对抗、攻防演练 漏洞知识库漏洞、CVE、PoC、EXP 与安全研究
逆向|反编译
PHP源码PHP 网站源码、程序、系统 APP源码安卓/iOS APP 源码 ASP源码ASP 网站源码与程序 NET源码.NET 网站源码与系统 小程序源码微信/支付宝小程序源码 Dedecms风格模板Dedecms 织梦风格模板 Empirecms风格模板EmpireCMS 帝国风格模板 Discuz商业模板/插件Discuz 商业模板与插件 WordPress主题/插件WordPress 主题与插件 其它源码、模板其它各类源码与模板 游戏源码游戏源码与引擎项目 加密货币源码加密货币、区块链、钱包、USDT/比特币相关源码与工具 手游源码手机游戏源码、服务端、客户端与引擎项目 传奇源码热血传奇、传奇世界、复古传奇等客户端/服务端/引擎源码 页游源码网页游戏、H5 游戏、浏览器游戏源码 端游源码电脑单机游戏、PC 网游客户端/服务端源码
最新万能免驱动支持所有型号打印机下载程序 日历天气老黄历 · 每天同步真实日期与天气
站长工具站长工具 自助开通会员浏览该分类 其他资源qtziy SEO工具SEO工具 站群源码站群源码 泛程序泛程序 蜘蛛模板蜘蛛模板 蜘蛛池蜘蛛池 外链工具外链工具
搜索 自助开通会员🔓 破甲 API
登录 注册
首页 分类列表 CTF思路 LFIboomCTF - 📖本地文件包含漏洞实践源码及相…
CTF思路
作者:admin 发布:2026-10-05

LFIboomCTF - 📖本地文件包含漏洞实践源码及相应协议利用指南

项目说明LFI(Local File Include)漏洞漏洞简介下面是纯bb,了解过的跳过这部分;解释:LFI是能够打开并包含本地文件的漏洞;这里区别一下RFI,远程文件包含漏洞;意义:文件包含漏洞是"代码注入"的一种,包含即执行,可干的坏事可想而知,看i春秋总结的危害有如下几…
资源可下载 免费下载 0 条讨论
会员资源
开通会员后即可下载全部资源。
登录后开通会员
会员方案
433浏览量
0讨论
2下载链接
可下载资源状态
内容可验证
更新 2026-10-05
人工审核发布
评论区答疑

项目说明

LFI(Local File Include)漏洞

漏洞简介

下面是纯bb,了解过的跳过这部分;

解释:LFI是能够打开并包含本地文件的漏洞;

这里区别一下RFI,远程文件包含漏洞;

意义:文件包含漏洞是"代码注入"的一种,包含即执行,可干的坏事可想而知,看i春秋总结的危害有如下几种:

1. PHP包含漏洞结合上传漏洞;
2. PHP包含读文件;
3. PHP包含写文件;
4. PHP包含日志文件;
5. PHP截断包含;
6. PHP内置伪协议利用。

PHP中文件包含函数有以下四种:

1. require()
2. require_once()
3. include()
4. include_once()

include和require区别主要是,include在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行;而require函数出现错误的时候,会直接报错并退出程序的执行。

而include\_once(),require_once()这两个函数,与前两个的不同之处在于这两个函数只包含一次,适用于在脚本执行期间同一个文件有可能被包括超过一次的情况下,你想确保它只被包括一次以避免函数重定义,变量重新赋值等问题。

最简单的漏洞代码:<?php include($_GET[file]);?>

当使用这4个函数包含一个新的文件时,该文件将作为PHP代码执行,PHP的内核并不会在意被包含的文件是什么类型。即你可以上传一个含shell的txt或jpg文件,包含它会被当作PHP代码执行(图马)。

这个玩意儿与CTF的渊源(协议基础)


1. php://伪协议 >> 访问各个输入/输出流;
- php://filter
1. 解释:php://filter是一种元封装器,设计用于"数据流打开"时的"筛选过滤"应用,对本地磁盘文件进行读写。简单来讲就是可以在执行代码前将代码换个方式读取出来,只是读取,不需要开启allow\_url_include;

2. 用法:?file=php://filter/convert.base64-encode/resource=xxx.php

3. ?file=php://filter/read=convert.base64-encode/resource=xxx.php 一样

4. 例子:

- ]()
- nctf{edulcni_elif_lacol_si_siht}
- 练习题目源码文件见filter文件夹;

- php://input

1. 解释:上面filter既然能读文件,肯定还能写文件,这就可以利用input将数据POST过去,即php://input是用来接收post数据的;
2. 用法:?file=php://input 数据利用POST传过去
3. 注意:如果php.ini里的allow\_url_include=On(PHP < 5.30),就可以造成任意代码执行,在这可以理解成远程文件包含漏洞(RFI),即POST过去一句话,如<?php phpinfo();?>,即可执行;
4. 例子:
- 碰到file\_get_contents()就要想到用php://input绕过,因为php伪协议也是可以利用http协议的,即可以使用POST方式传数据,具体函数意义下一项;
- ]()
- 并且可以用data伪协议来绕过,由于这个题由于存在extract()函数,存在变量覆盖漏洞;直接?flag=1&shiyan=即可;
- 练习题目源码文件见input1文件夹;
- 2016华山杯有一道题,源码见本地data文件夹,这个可以利用data流;
2. data://伪协议 >> 数据流封装器,和php://相似都是利用了流的概念,将原本的include的文件流重定向到了用户可控制的输入流中,简单来说就是执行文件的包含方法包含了你的输入流,通过你输入payload来实现目的;
- data://text/plain

1. 解释:
2. 用法:?file=data://text/plain;base64,base64编码的payload

3. 注意:

- <?php phpinfo();,这类执行代码最后没有?>闭合;

- 如果php.ini里的allow\_url_include=On(PHP < 5.30),就可以造成任意代码执行,同理在这就可以理解成远程文件包含漏洞(RFI);
4. 例子:
- 和php伪协议的input类似,碰到file\_get_contents()来用;
- 练习题目源码文件见data文件夹;

3. phar://伪协议 >> 数据流包装器,自 PHP 5.3.0 起开始有效,正好契合上面两个伪协议的利用条件。说通俗点就是php解压缩包的一个函数,解压的压缩包与后缀无关。
- phar://
1. 用法:?file=phar://压缩包/内部文件
2. 注意:

- PHP版本需大于等于 5.3,这就说明上述协议已经挂掉了,但又出来了phar协议前赴后继;
- 压缩包一般是phar后缀,需要代码来生成,但是zip后缀也可以;
- 压缩包需要是zip协议压缩,rar不行,tar等格式待测;
- 利用url的压缩包后缀可以是任意后缀;
3. 例子:
- 本地:phar1文件(SWPU2016,限制上传类型)
- 本地:phar2文件(限制上传类型,上传重命名)

4. 上述说的php.ini文件的限制如下:
- allow\_url_fopen = On 默认打开 ,允许URLs作为像files一样作为打开的对象;
- allow\_url_include = On 默认关闭 ,允许include/require函数像打开文件一样打开URLs;

函数解释

1. file\_get_contents():这个函数就是把一个文件里面的东西 (字符)全部return出来作为字符串。
- 除此之外,通过实践我发现这个函数如果直接把字符串当作参数会报错,但如果包含的是http协议的网址,则会像curl命令一样,把源码读出来。而php伪协议也是识别http协议的,所以说上面php://input可以将POST的数据读过来来赋值给参数,这就造成了上述那个例子的漏洞。
2. include():(就是require,reqiuire_once,include_require这一类)include是针对文档的代码结构的。也就是说,include进来,成了这个文件的其中一部分源代码,这类函数就是文件包含漏洞的罪魁祸首。
3. include把导入的字符串当成当前文件的代码结构,而file_get_contents只是返回字符串,这是两个函数最大的不同。关于字符串执行的问题,file_get_contents返回的字符串失去了被执行的能力,哪怕字符串里面有<?php ?>,一样能拿出来但不执行。而include导入的字符串,如果被导入的文件有<?php,那就成为php代码的一部分。如果没有<?php,只是把它当做源文件<?php ?>外的一部分。

简单有趣的Web题

1. 本地包含、代码注入:
- 源码文件见:命令执行文件夹
- payload:);echo \cat flag.php\;//
- );用来闭合()方法,echo\command\;执行命令,//注释。
2. php://input伪协议:
- 源码文件见input2文件夹
- payload: POST数据<?php echo \cat flag.php\;?>
- php://input协议读取POST过来的数据并执行。

Tips

1. 上述filter伪协议利用的是encode编码为base64再带出来,filter还有decode解密语句,可利用场景如下(文字摘自phithon博客):

- 源码存在eval(xxx),但xxx长度限制为16个字符,而且不能用eval或assert,怎么执行命令。题目源码文件见tips.php,那么利用这个代码怎么拿到webshell?

- 利用file_put_contents可以将字符一个个地写入一个文件中,大概请求如下:

- file_put_contents的第一个参数是文件名,我传入N。PHP会认为N是一个常量,但我之前并没有定义这个常量,于是PHP就会把它转换成字符串'N';第二个参数是要写入的数据,a也被转换成字符串'a';第三个参数是flag,当flag=8的时候内容会追加在文件末尾,而不是覆盖。

- 除了file_put_contents,error_log函数效果也类似。

- 但这个方法有个问题,就是file_put_contents第二个参数如果是符号,就会导致PHP出错,比如param=$_GETa;&a=file_put_contents。但如果要写webshell的话,“<”等符号又是必不可少的。

- 于是微博上 @买贴膜的 想出一个办法,每次向文件'N'中写入一个字母或数字,最后构成一个base64字符串,再包含的时候使用php://filter对base64进行解码即可。

- 这时候就利用了decode了,成功getshell。

-

参考博文

1.
2.
3.
4.
5.
6.

项目信息

开发语言:HTML

Star 数:171

技术要点

该项目属于CTF思路方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕📖本地文件包含漏洞实践源码及相应协议利用指南展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。

从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。

使用与学习建议

1. 下载源码压缩包,解压到本地环境。

2. 根据项目类型准备对应的运行环境与依赖。

3. 按照 README 中的步骤完成配置与部署。

4. 在隔离的测试环境中运行验证,避免影响生产系统。

免责声明

本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。

资源标题LFIboomCTF - 📖本地文件包含漏洞实践源码及相应协议利用指南
所属分类CTF思路
发布作者admin
发布时间2026-10-05 23:48:16
下载权限 免费下载
附件数量2 个下载链接
浏览次数433
讨论数量0
主题状态正常讨论中

本资源免费,登录后即可在本页「下载链接」区域获取全部附件。

请在评论区留言说明具体链接,或联系作者补档。楼主更新后本页会同步最新的下载地址。

请先阅读正文中的授权说明;未注明的默认仅限站内学习交流,禁止直接搬运到其他站点二次售卖。
还没有讨论,快来抢沙发~
登录 后才能参与讨论
下载链接
会员才能下载
登录后开通会员
同分类推荐
暂无同类资源
免费登录即可下载
查看会员
放大预览

© 2026 剑庭安 - 网站开发定制 SEO 优化蜘蛛池代做 在线看手相算命. 保留所有权利。

Powered by 酷像SEOv3.0

网站地图 Sitemap.xml
首页 全部分类 黑客安全 逆向|反编译 精品源码 站长工具自助开通会员其他资源SEO工具站群源码泛程序蜘蛛模板蜘蛛池外链工具创意乐园 搜索 会员服务 登录 注册