作者:冰耿
作者其他详细专栏
CTF系统学习专栏https://blog.csdn.net/bing_geng/category_12496105.html
Python爬虫学习专栏https://blog.csdn.net/bing_geng/category_12494819.html
*前言: 如果有疑问或者错误欢迎在评论区或私信交流!!
难度:1
方向:Web
题解数:15
解出人数:499
题目描述: 怎么读取文件呢?
一. 题目界面
- 点击链接后,显示的界面如如下所示。

<?php
highlight_file(__FILE__);
include("./check.php");
if(isset($_GET['filename'])){
$filename = $_GET['filename'];
include($filename);
}
?>
代码解释:
highlight_file(FILE);: 这一行用于在浏览器中高亮显示当前 PHP 文件的源代码。
include(“./check.php”);: 包含了一个名为 check.php 的文件。这个文件的内容在上面的代码中没有展示,但可以假设它用于一些检查或初始化的逻辑。
if(isset($_GET[‘filename’])): 检查是否存在名为 filename 的 GET 参数。
$filename = $_GET[‘filename’];: 将 filename 参数的值赋给变量 $filename。
include($filename);: 包含由用户提供的文件路径。这是一个潜在的安全问题,因为用户可以通过构造特殊的文件路径来包含不受信任的文件,可能导致文件包含漏洞。
二. 本人思路
-
在看完了php的代码解释后,尝试把输入参数为 filename 参数,设置为flag,或者flag.php,均没有得到flag值。


-
根据之前我一直在博客中的思路中提到,当没有头绪时,我们可以理一理现在所拥有的线索。
1)题目描述中:怎么读取文件呢?
2)代码提示中有 include(“./check.php”)
3)需要包含参数 filename -
根据读取文件这个提示,由此推测是不是考察该怎么读取文件。这里我们就讲一讲伪协议,在攻防世界里面,该协议其实在我的其他博客中出现很多次。
伪协议是一种在 URL 中使用的特殊协议,用于提供对特定资源或功能的访问。这些协议通常由底层的 PHP 或其他编程语言的函数来处理,而不是通过传统的协议(如 HTTP、FTP)来访问。以下是一些常见的 PHP 中使用的伪协议及其示例:
php://input:允许访问请求的原始请求体。
php://output:允许访问响应的输出流。
php://filter:提供对各种流的过滤器功能。
例子:php://filter/read=string.rot13|convert.base64-encode/resource=index.php。此示例使用 ROT13 和 Base64 编码对 index.php 文件进行过滤。
php://stdin、php://stdout、php://stderr:允许对标准输入、标准输出和标准错误进行访问。
data://:允许直接在 URL 中包含数据。
例子:data:text/plain;base64,SGVsbG8gd29ybGQ=。此示例包含了 “Hello world” 的 Base64 编码数据。
-
在这里我们需要使用到php://filter:提供对各种流的过滤器功能,用于对文件内容进行过滤
格式为:php://filter / 过滤器(read)| 过滤器(write) / resource= 目标文件
参数:resource=<要过滤的列表>
read=<读列表,设置过滤器>
write=<写列表,设置过滤器>
常见过滤器:
string.xxx(字符过滤器): string.rot13、string.toupper、string.tolower、string.strip_tags
convert.xxx (转换过滤器):convert.base64、convert.quoted-printable、convert.iconv等等
compression.xxx(压缩过滤):compression.zlib、compression.bzip2、
compression.zlib.deflate、compression.bzip2.compress等等 -
在这里要读取文件,所以 php文件读取使用:convert.xxx (转换过滤器)
php://filter/convert.iconv.UTF-7.UCS-4*/resource=xxx.php
?filename=php://filter/convert.iconv.UTF-7.UCS-4*/resource=flag.php
该博客围绕Web安全中PHP文件读取问题展开。介绍题目界面代码,指出包含用户提供文件路径存在文件包含漏洞。作者思路是根据题目提示推测考察文件读取,讲解PHP伪协议,重点介绍php://filter用于文件内容过滤,给出读取文件的使用示例。

7554

被折叠的 条评论
为什么被折叠?



