CTF中常用的php伪协议利用

本文探讨了PHP中的php://filter用于源代码编码和php://input执行POST数据,以及data://用于传递和执行PHP代码的场景。重点讲解了base64编码在数据传输中的应用,适合理解文件操作和编码技巧的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

file://

作用:

用于访问文件(绝对路径、相对路径、网络路径)

示例:

http://www.xx.com?file=file:///etc/passswd

php://

作用:访问输入输出流

1. php://filter

作用:

读取源代码并进行base64编码输出

示例:

http://xxx.x.x.x/cmd.php?cmd=php://filter/read=convert.base64-encode/resource=[文件名](针对php文件需要base64编码)

参数:

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

2. php://input

作用:

执行POST数据中的php代码

示例:

http://xxx.x.x.x/cmd.php?cmd=php://input

POST数据:<?php phpinfo()?>

注意:

enctype="multipart/form-data" 的时候 php://input 是无效的

Example:

  • php://filter用于读取源码
  • php://input用于执行php代码

所以下面采用filter来读源码,但上面提到过针对php文件需要base64编码,所以使用其自带的base64过滤器。

?file=php://filter/read=convert.base64-encode/resource=useless.php

data://

作用:

data://数据流封装器,以传递相应格式的数据。通常可以用来执行PHP代码。一般需要用到base64编码传输

示例:

http://xxx.x.x.x/include.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b

### CTF Web 安全中 PHP 伪协议利用与防护 #### PHP 伪协议概述 PHP 提供了一系列特殊的伪协议,如 `php://input`、`php://filter` 和 `data://` 等。这些伪协议可以用于读取、写入或执行代码,但在某些情况下也可能成为安全隐患[^1]。 #### 常见的伪协议及其用途 - **`php://input`**: 可以用来读取原始 POST 数据。 - **`php://filter`**: 支持对流进行过滤操作,常用于编码转换或数据处理。 - **`data://`**: 允许直接嵌入数据作为输入源。 在 CTF 中,攻击者可能会利用这些特性来绕过文件包含限制或其他安全机制。例如,通过构造特定 URL 或参数传递给存在漏洞的应用程序,从而触发未预期的行为。 #### 防护措施 为了避免因使用上述伪协议而导致的安全风险,可以从以下几个方面着手: ##### 修改配置文件 最直接的方法是在服务器端全局禁用潜在危险的功能。这可以通过编辑 `php.ini` 文件并调整相应选项完成。具体来说,关闭不必要的模块和服务能够显著降低受攻击面。 ```ini allow_url_fopen = Off allow_url_include = Off ``` ##### 动态设置运行时指令 对于无法更改全局配置的情况,则可以在应用程序内部采用编程方式临时改变环境变量。借助于内置函数 `ini_set()` 实现这一点同样有效。 ```php <?php // 关闭远程文件包含功能 ini_set('allow_url_include', '0'); ?> ``` ##### 输入验证与清理 无论何时接收外部输入都应保持警惕心,尤其是当涉及到路径名解析的时候更需谨慎对待。确保所有传入的数据经过严格校验后再进一步处理;必要时还可以考虑引入黑名单/白名单策略加以辅助控制[^3]。 ##### 使用现代框架和库 许多流行的开发工具包已经内置了针对此类威胁的有效防范手段。积极选用那些具有良好口碑且持续更新维护的产品有助于减轻开发者负担的同时提高整体安全性水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值