【攻防世界】网络安全学习180天 之 fileinclude NO.GFSJ1060

该博客围绕Web安全中PHP文件读取问题展开。介绍题目界面代码,指出包含用户提供文件路径存在文件包含漏洞。作者思路是根据题目提示推测考察文件读取,讲解PHP伪协议,重点介绍php://filter用于文件内容过滤,给出读取文件的使用示例。


作者:冰耿
作者其他详细专栏
CTF系统学习专栏https://blog.csdn.net/bing_geng/category_12496105.html
Python爬虫学习专栏https://blog.csdn.net/bing_geng/category_12494819.html

*前言: 如果有疑问或者错误欢迎在评论区或私信交流!!

难度:1
方向:Web
题解数:15
解出人数:499
题目描述: 怎么读取文件呢?

一. 题目界面

  1. 点击链接后,显示的界面如如下所示。
    在这里插入图片描述
<?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);: 包含由用户提供的文件路径。这是一个潜在的安全问题,因为用户可以通过构造特殊的文件路径来包含不受信任的文件,可能导致文件包含漏洞。

二. 本人思路

  1. 在看完了php的代码解释后,尝试把输入参数为 filename 参数,设置为flag,或者flag.php,均没有得到flag值。
    在这里插入图片描述
    在这里插入图片描述

  2. 根据之前我一直在博客中的思路中提到,当没有头绪时,我们可以理一理现在所拥有的线索。
    1)题目描述中:怎么读取文件呢?
    2)代码提示中有 include(“./check.php”)
    3)需要包含参数 filename

  3. 根据读取文件这个提示,由此推测是不是考察该怎么读取文件。这里我们就讲一讲伪协议,在攻防世界里面,该协议其实在我的其他博客中出现很多次。
    伪协议是一种在 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 编码数据。

  1. 在这里我们需要使用到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等等

  2. 在这里要读取文件,所以 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

三. 总结

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值