CISP-PTE 文件包含1(php://filter 伪协议)

目录

一、php://filter

1、基本语法结构

2、关键过滤器讲解

(1)convert.base64-encode(最关键的过滤器)

[(2)read= 和 write= 参数](#(2)read= 和 write= 参数)

(3)过滤器链

(4)字符串过滤器

二、渗透实战

1、打开靶场

2、php://filter渗透

(1)php://filter/read=convert.base64-encode/resource=../key.php

(2)php://filter/convert.base64-encode/resource=../key.php

3、base64解码


本文详细讲解CISP-PTE靶场文件包含关卡的渗透实战全流程。重点讲解了convert.base64-encode过滤器的关键作用:通过Base64编码防止PHP代码被执行,从而获取文件源码。文章详细解析了两种常用payload格式,并演示了在CISP-PTE靶场中的实战应用:通过构造包含../key.php的过滤器路径,获取Base64编码结果后解码得到flag。该方法有效绕过文件直接执行限制,展现了php://filter在文件包含利用中的强大功能。

一、php://filter

php://filter 是 PHP 提供的一个非常强大且常用的元包装器 。它本身不是用来读取"文件内容"的,而是用来在读取文件时,对数据流进行过滤、转换、编码 的。核心思想是:在数据源(如一个文件)和目的地(如 include() 函数或 echo 语句)之间,建立一个可配置的"过滤管道"。

1、基本语法结构

php://filter 的 URL 遵循一个标准的路径结构:

复制代码
php://filter/(过滤器链)/resource=(目标文件)
  • php://filter/: 声明使用过滤器流。

  • (过滤器链): 指定一个或多个过滤器,按顺序对数据进行处理。

  • /resource=: 指定要读取的原始资源(比如一个文件)。


2、关键过滤器讲解

php://filter 的强大之处在于其丰富的过滤器。

(1)convert.base64-encode(最关键的过滤器)

  • 功能:将数据流进行 Base64 编码。

  • 为什么它在安全领域如此重要

    • 绕过死亡 Exit :如果目标文件是 PHP 代码,直接 include 它会执行其中的代码。如果代码末尾有 exit();die(); 函数,页面会提前结束,你看不到完整内容。但先进行 Base64 编码,PHP 引擎就不会执行它,而是将其当作纯文本处理。

    • 查看源代码:对于 PHP 文件,直接读取会执行,看不到源代码。编码后,你得到的是源代码的 Base64 形式,解码后即可查看。

    • 处理特殊字符:编码可以避免原始数据中的特殊字符(如引号、换行符)在特定上下文中引发问题。

示例 Payload: php://filter/read=convert.base64-encode/resource=index.php

这个 Payload 的意思是:读取 index.php 文件,并将其内容进行 Base64 编码后输出。

(2)read=write= 参数

  • read=: 指定在读取资源时应用的过滤器链。

  • write=: 指定在写入资源时应用的过滤器链。(在文件包含中较少使用)

read= 常常可以省略,所以上面的 Payload 也可以简写为:

复制代码
php://filter/convert.base64-encode/resource=index.php

(3)过滤器链

你可以将多个过滤器串联起来,用 |(管道符)分隔,数据会依次经过这些过滤器。

示例:php://filter/read=convert.base64-encode|convert.base64-decode/resource=index.php

这个例子中,数据会先被 Base64 编码,然后立即解码,最终输出原始内容(这个例子本身无意义,但展示了链式用法)。

(4)字符串过滤器

  • string.rot13: 对数据进行 ROT13 编码(字母移位 13 位)。

  • string.toupper / string.tolower: 将字符串转换为大写/小写。

示例:php://filter/read=string.rot13/resource=config.php

这会将 config.php 的内容用 ROT13 编码后输出。

二、渗透实战

1、打开靶场

打开靶场,页面提示"PHP文件包含风险的产生原因是在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。测试该网站可能存在的文件包含风险,尝试获取webshell,答案就在根目录下key.php文件中。"

复制代码
http://03f29109.clsadp.com/

点击进入答题,如下所示进入文件包含的关卡页面,注意如下URL的参数为 file=view.html。

复制代码
http://03f29109.clsadp.com/vulnerabilities/fu1.php?file=view.html

2、php://filter渗透

(1)php://filter/read=convert.base64-encode/resource=../key.php

复制代码
http://03f29109.clsadp.com/vulnerabilities/fu1.php?file=php://filter/read=convert.base64-encode/resource=../key.php
  • php://filter/

    • 这是 PHP 内置的流包装器协议,用于对数据流进行过滤处理。
  • read=convert.base64-encode

    • read=:指定在读取资源时应用的过滤器。

    • convert.base64-encode:具体的过滤器,功能是将数据流进行 Base64 编码。

    • 这一部分是关键 :它的目的是避免文件被直接执行或渲染。通过 Base64 编码,PHP 代码会变成一堆无意义的文本字符,从而防止其被解释执行。

  • /resource=../key.php

    • resource=:指定要读取的原始资源,即目标文件。

    • ../key.php:文件路径,表示上一级目录下的 key.php 文件。

当攻击Payload 被传递给文件包含函数时,会执行如下流程:

  • 定位资源 :PHP 首先定位到 ../key.php 这个文件。

  • 创建过滤链 :系统建立一个数据流处理管道,并应用 convert.base64-encode 过滤器。

  • 读取并编码 :PHP 开始读取 ../key.php 文件的原始内容。但内容不会直接输出,而是会先通过 Base64 编码过滤器。

  • 返回结果 :最终,你得到的不再是 key.php 的原始代码,而是该代码经过 Base64 编码后的一长串字符串

(2)php://filter/convert.base64-encode/resource=../key.php

这个 Payload 是上一个 Payload 的简写形式 ,它们的功能完全等效

执行payload后,整个攻击流程如下所示:

  • 文件识别 :PHP 引擎识别出你想要访问 ../key.php 文件。

  • 过滤处理 :由于指定了 php://filterconvert.base64-encode,引擎不会直接返回文件的原始内容。它创建了一个"过滤管道",文件数据流会先通过这个管道。

  • 编码输出key.php原始字节内容 (包括所有 <?php ... ?> 标签、变量定义、注释等)被送入 Base64 编码器。最终输出的不再是可执行的 PHP 代码,而是一长串由大小写字母、数字和 +/= 组成的 Base64 编码字符串。

3、base64解码

使用burpsuite的decoder模块进行base64解码,其base64编码后的值如下所示。R2V0IGl0IQ0KPD9waHANCg0KLy9rZXkzOiBlNnY5cjJwNA0KPz4NCg==

对其进行base64解码,如下所示成功获取到key值。

|-------------------------------------|
| Get it! <?php //key3: e6v9r2p4 ?> |

相关推荐
mooyuan天天1 天前
CISP-PTE 命令执行9
cisp-pte·命令执行·命令执行漏洞
mooyuan天天2 天前
CTF-PTE 文件包含8(八种渗透方法)
cisp-pte·文件包含·文件包含漏洞
mooyuan天天3 天前
CISP-PTE SQL注入2(两种方法渗透:手注+sqlmap)
cisp-pte·sql注入·sqlmap·sql注入漏洞
mooyuan天天3 天前
CTF-PTE 日志分析3
cisp-pte·日志分析
mooyuan天天4 天前
CISP-PTE 日志分析2
网络安全·cisp-pte·日志分析
mooyuan天天5 天前
CISP-PTE 文件上传5
文件上传·cisp-pte·文件上传漏洞·黑名单绕过
mooyuan天天5 天前
CISP-PTE SQL注入5(万能密码)
cisp-pte·sql注入·sql注入漏洞·万能密码
mooyuan天天6 天前
CISP-PTE 文件上传1
文件上传·cisp-pte·文件上传漏洞
mooyuan天天6 天前
CISP-PTE 日志分析1
cisp-pte·日志分析·暴力破解