【第一章 web入门]afr_1 1】任意文件读取

news/2024/5/19 22:26:08 标签: 前端, 任意文件读取, 伪协议, ctf

一、漏洞简介

任意文件读取/下载漏洞(Arbitrary File Read/Download Vulnerability),是指攻击者可以通过某些漏洞,绕过应用程序的限制,直接读取或下载应用程序之外的文件。

这种漏洞通常是由于应用程序没有对用户输入进行充分的验证和过滤而导致的。攻击者可以通过构造恶意的请求来利用该漏洞,从而读取或下载他们本来无权访问的文件,如密码、私钥、证书等,会提供攻击者更多可用信息,提高被入侵的风险。

二、解题过程

尝试p是什么相关的参数:
http://b76b2ea7-9676-4d7a-b904-6b1232d1db02.node5.buuoj.cn:81/?p=./hello
在这里插入图片描述
猜测p后面跟随的应该是文件名,传入后端之后将文件的内容显示出来,尝试输入别的东西,不管输入什么都是一片空白,可能过滤了吧,然后就不知道该干嘛了,这也不能问别人,我就在网上找啊找,最终找到了一条记录:Filter的利用,如php://filter/convert.Base64-encode(将文件流通过Base64进行编码)。这句话啥意思,完全看不懂,去查查:

php://filter 是 PHP 中的一种流过滤器(stream filter)机制,用于对数据流进行过滤和转换。它允许你在读取或写入数据流时应用过滤器,以便在传输数据之前或之后进行一些处理。
使用 php://filter 的基本语法如下:

 php://filter/<filtername>/resource
其中:

<filtername> 是过滤器的名称,表示你要应用的过滤器类型。
resource 是要过滤的数据流资源。
以下是一些例子:

Base64 编码解码:
$data = 'Hello, World!';
$encoded = file_get_contents('php://filter/read=convert.base64-encode/resource=data:text/plain;base64,' . base64_encode($data));
echo $encoded;

$decoded = file_get_contents('php://filter/write=convert.base64-decode/resource=data:text/plain;base64,' . base64_encode($data));
echo $decoded;
上述例子中,convert.base64-encode 和 convert.base64-decode 是两个过滤器,分别用于对数据进行 Base64 编码和解码。

字符串替换:


$data = 'Hello, World!';
$filteredData = file_get_contents('php://filter/read=string.toupper/resource=data:text/plain;base64,' . base64_encode($data));
echo $filteredData;
在这个例子中,string.toupper 过滤器将字符串转换为大写。

自定义过滤器:


stream_filter_register('custom_filter', 'CustomFilter');

class CustomFilter extends php_user_filter {
    public function filter($in, $out, &$consumed, $closing) {
        while ($bucket = stream_bucket_make_writeable($in)) {
            $bucket->data = strtoupper($bucket->data);
            $consumed += $bucket->datalen;
            stream_bucket_append($out, $bucket);
        }
        return PSFS_PASS_ON;
    }
}

$data = 'Hello, World!';
$filteredData = file_get_contents('php://filter/read=custom_filter/resource=data:text/plain;base64,' . base64_encode($data));
echo $filteredData;
这个例子中,定义了一个自定义的过滤器 CustomFilter,它将输入数据转换为大写。

总体来说,php://filter 提供了一种灵活的方式来处理数据流,你可以根据具体需求选择合适的过滤器进行处理。

可能这道题目源码里面用到了file_get_contents 函数,这函数本身是用来读取文件内容的,它返回文件内容的原始字符串。它并不会解析文件内容,而是将文件的原始数据以字符串形式返回。
于是,套用了一下hello,会是什么样子的?
在这里插入图片描述
进行base64解码:
在这里插入图片描述
发现可以查看源码,这里就不限制我只能输入hello了,我估计是输出的时候过滤了什么。
在这里插入图片描述
至于这里为什么测试flag,我也不知道,看网上说有这文件:
在这里插入图片描述

得到flag:
在这里插入图片描述
n1book{afr_1_solved}

这里提供一篇相关的文章:https://blog.csdn.net/qq_44418229/article/details/125197168

PS:
这样读取不到文件http://42ec0689-09ce-4ecf-8cef-b7e24fd95cfe.node5.buuoj.cn:81/?p=php://flag,但是这样就可以读取到文件了,http://42ec0689-09ce-4ecf-8cef-b7e24fd95cfe.node5.buuoj.cn:81/?p=php://filter/convert.base64-encode/resource=flag,说明什么?首先第一种写法就有问题,你最好理解理解原理再说吧。
我觉得这篇文章讲的很好,同一个例子:https://www.freebuf.com/articles/web/333519.html
https://segmentfault.com/a/1190000018991087也不错
好吧,伪协议这一块,我太弱了,下次出一片总结文章。


http://www.niftyadmin.cn/n/5346140.html

相关文章

977.有序数组的平方(力扣LeetCode)

文章目录 977.有序数组的平方题目描述快速排序归并排序 977.有序数组的平方 题目描述 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 示例 1&#xff1a; 输入&#xff1a;nums [-4,-1,0…

EasyExcel实现导出图片到excel

pom依赖&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.0</version> </dependency> 实体类&#xff1a; package com.aicut.monitor.vo;import com.aicut.monit…

申万宏源基于 StarRocks 构建实时数仓

作者 &#xff1a;申万宏源证券 实时数仓项目组 小编导读&#xff1a; 申万宏源证券有限公司是由新中国第一家股份制证券公司——申银万国证券股份有限公司与国内资本市场第一家上市证券公司——宏源证券股份有限公司&#xff0c;于 2015 年 1 月 16 日合并组建而成&#xff0c…

微信小程序开发如何实现阴影/悬浮效果

显示&#xff1a; 实现&#xff1a; <view style"width: 100%;height: 500rpx; display: flex; justify-content:space-evenly;align-items: center; "><view style"width: 200rpx;height:100rpx;background-color: aqua; display: flex; align-item…

蓝桥杯练习题

题目&#xff1a;每—本正式出版的图书都有一个ISBN号码与之对应&#xff0c;ISBN码包括9位数字、1位识别码和3位分隔符&#xff0c;其规定格式如“x-xXX-XXXxx-x”&#xff0c;其中符号"-"是分隔符(键盘上的减号)&#xff0c;最后—位是识别码&#xff0c;例如O-670…

精要图示:园区金融数字化服务蓝图,以园区为支点推动信贷业务增长

作为企业集聚地&#xff0c;园区已然成为银行业夯实客群基础的重要切口&#xff0c;各大行陆续围绕园区场景创新金融产品&#xff0c;以期抢跑园区金融新赛道、把握新增量。 启信慧眼首推一站式【园区金融】数字化服务方案&#xff0c;该方案同时支持启信天元私有化部署&#x…

微软人工智能办公AI工具 Copilot Pro 11项 Copilot 功能

Copilot&#xff08;曾用名 Bing Chat 和 Bing Chat Enterprise&#xff09;在此期间成为了许多用户的日常AI伴侣&#xff0c;并在正式发布后将继续为用户提供AI驱动的网络聊天体验。 微软Copilot官方网址链接&#xff1a;Microsoft Copilot: 你的日常 AI 助手 Copilot详情&am…

coding推送代码Jenkins自动构建部署

实现功能&#xff1a;我们向coding推送代码&#xff0c;通过webhook自动通知Jenkins&#xff0c;实现自动构建部署 coding 项目设置 / 开发者选项 / Service Hook 输入以下参数 发送POST请求服务 URL&#xff1a;htttp://xxx用户名&#xff1a;xxx密码&#xff1a;xxx Jen…