您需要 登录 才可以下载或查看,没有账号?立即注册
为什么用 php://filter 如果直接包含 .php 文件,PHP 会实行它,而不是显示源码。 使用 php://filter 可以 避免代码实行,而是以 编码后的情势读取源码(如 Base64、UTF-16 等)。 resource= 这个参数是必须的,它指定了你要筛选过滤的数据流。 read= 对读取的数据流应用一个或多个过滤器(按顺序处理)php://filter/read=convert.base64-encode/resource=flag.php#先读取flag.php,在对其内容进行base64编码复制代码write= 对写入的数据流应用一个或多个过滤器php://filter/write=string.rot13/resource=test.txt#php://filter/write=string.rot13/resource=test.txt复制代码 若未指定 read= 或 write=,过滤器会同时应用于读写链(根据操作范例主动适配)。
伪协议种类 file:// 访问当地文件体系 http:// 访问http(s)网址 ftp:// 访问ftp php:// 访问各个输入/输出流 zlib:// 压缩流 data:// 数据 rar:// RAR压缩包 ogg:// 音频流
特性 体系允许读取文件,但可能: 过滤了 ../(目次穿越) 限制文件后缀(如只允许 .txt) 对文件内容做检查(如检测 ),导致无法看到源码内容(仅显示实行效果)。?filename=php://filter/convert.base64-encode/resource=flag.php#使用 convert.base64-encode#将 flag.php 的内容转换为 Base64 编码字符串(非实行),从而绕过 PHP 剖析,直接输出编码后的源码。convert.iconv.utf8.utf16 → 让文件内容变成 UTF-16,可能绕过某些正则检测 convert.base64-encode → 让文件变成 Base64,避免直接显示 PHP 代码#使用 convert.iconv.utf8.utf16#将文件内容从 UTF-8 编码转换为 UTF-16,导致以下效果:/*1.粉碎 PHP 标签结构:原始 的 UTF-8 字节序列被转换后,无法被 PHP 识别为正当标签,从而阻止代码实行。例如:,转换后会显示为乱码,但敏感信息(如 FLAG{xxx})仍可被识别。[/code]
绕过WAF/黑名单 直接访问 flag.php 被拦截,但 php://filter 可能未被检测。convert.iconv.utf8.utf16 → 让文件内容变成 UTF-16,可能绕过某些正则检测convert.base64-encode → 让文件变成 Base64,避免直接显示 PHP 代码复制代码
使用道具 举报