[ACTF2020 新生赛]Include

news/2025/1/15 17:09:37/文章来源:https://www.cnblogs.com/imtaieee/p/18519084

链接:https://buuoj.cn/challenges#[ACTF2020 新生赛]Include

打开环境后如下,只有一个 "tips" 的超链接。

访问 tips,留意传入了 "file" 参数。

接下来,可以尝试下路径穿越:?file=flag.php../../../../../etc/passwd

可以看到,存在路径穿越漏洞,但是通过路径穿越漏洞并没有读取到根目录下的 flag 文件。

这时候,回过头去再看访问 tips 时的情况。

可以看到,file 参数被设置为了 "flag.php",因此,有可能 flag 是藏在了 flag.php 文件内,以注释的方式存放着,因此就需要考虑如何能够成功的读取到 flag.php 文件的源码。

下面直接给出 Payload:?file=php://filter/read=convert.base64-encode/resource=flag.php

知其然,知其所以然。

在 PHP 中, 存在着 "伪协议" 这一特性。

即,PHP 带有很多内置 URL 风格的封装协议,可用于类似 fopen、copy、file_exists、filesize 的文件系统函数。 除了这些封装协议,还能通过 stream_wrapper_register 函数来注册自定义的封装协议。

总而言之,PHP 伪协议就是用于处理文件的一种协议,比如说在 include 一些文件时,使用各种伪协议就可以特定化的处理该文件或决定如何访问文件、解析文件。

在 PHP 中,支持伪协议的函数有如下:

  • include。
  • include_once。
  • require。
  • require_once。
  • fopen。
  • file。
  • readfile。
  • file_get_contents。
  • ...。

而伪协议的分类有如下:

  • file://。
  • php://。
  • zip://。
  • ...。

其中,"php://" 伪协议用于访问各个输入/输出流。

"php://" 伪协议的条件:

  • allow_url_fopen:off/on。
  • allow_url_include:off/on(php://input、php://stdin、php://memory、php://temp 伪协议需要 on)。

这里着重介绍以下 "php://" 伪协议中的 "php://filter"伪协议。

php://filter 是 PHP 中的一种特殊的伪协议,它允许对数据进行过滤处理。它可以通过输入流或输出流来操作数据,常用于对文件、数据流等进行编码、解码、压缩等处理。

主要用途:

  • 对文件内容进行转换,如 base64 编码、ROT13 加密、字符串大小写转换等。
  • 对 HTTP 请求的输入或输出流进行过滤。

基本的语法:php://filter/read=<过滤器列表>/resource=<操作目标>

因此,本题可以使用 PHP 伪协议读取 "flag.php" 文件源码。

最后,将得到的 Base64 字符串解码后即可得到 flag。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/824894.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java面试题中高级进阶(JVM篇Java内存)

本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!说说Java内存结构?说说对象分配规则?描述一下JVM加载class文件的原理机制?似乎有点模糊了,那就大概看一下面试题吧。好记性不如烂键盘前言 本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!说说Java内存…

20222409 2024-2025-1 《网络与系统攻防技术》实验三实验报告

1.实验内容 1.1 本周学习内容 1.1.1 后门工具使用 * Netcat: 用于端口探测、局域网通信、文件传输,以及正向和反向连接的测试。 * Meterpreter: 作为Metasploit框架中的载荷模块,常用于溢出攻击成功后的控制会话,提供持久化的控制通道。 * Veil-Evasion: Linux平台上的免杀工…

VMwareWorkstation pro 17安装Win11(亲测好用)

1、安装包我用夸克网盘分享了「Win11_23H2_China_GGK_Chinese_Simplified_x64v2.iso」,点击链接即可保存。打开「夸克APP」: 链接:https://pan.quark.cn/s/817ccfc90f29 提取码:pPn1 2、安装教程(基于WMware workstation pro 17) 1) 打开WMware Workstation,点击创…

论文速读记录 - 202410

秋意浓,看几篇论文解解乏吧~坚持看论文不容易啊,十月也是多事之秋。看的论文有点少,也有点散,还是要专注一些具体的方向,梳理脉络,整理方案,才是看论文找解决方案的正确思路。 以后的每篇论文解读的后面,会附带一点个人看法/评论,如有冒犯还请见谅。 目录:LATE CHUNK…

现场可编程逻辑门阵列(FPGA)可应用的领域有哪些

现场可编程逻辑门阵列(FPGA)是一种能够根据需求现场编程的集成电路,能提供灵活的硬件解决方案。FPGA可应用的领域有信号处理、通信系统、工业自动化、医疗设备、军事与航空、金融计算、图像处理和视频分析等。其中,在信号处理方面,FPGA可以执行复杂的并行计算,用于滤波和…

NOIP2023 做题笔记

NOIP将近,由于我实力太菜,所以只能写写真题提升自己了。 P9868 [NOIP2023] 词典 简单字符串题,注意到可以换无限次,所以直接处理出每个字符串中最小的字符数和最大字符数就行了。#include<bits/stdc++.h> #define mxn 3010 using namespace std; char s[mxn][mxn]; i…

Windows 多次制作母盘,备份文件变大的问题

公司产品基于Win11 23H2镜像版本制作母盘,我们发现随着版本迭代,基于上一版本母盘生成新母盘备份,母盘文件会越来越大。 此处说明下镜像与母盘文件的区别, 1. 镜像是指操作系统的压缩文件,常见格式是ISO、WIM、ESD,用于安装,有灵活的安装部署选项。 2. 母盘文件是指在某…

怎么利用hadoop搭建自己的云计算

我们为了能够更加方便来识别主机,我们使用主机名而不是使用IP地址,以免多处配置带来更多的麻烦。把hd-master、hd-node1、hd-node2三台虚拟机服务器中的主机名(hostname)分别更改为master、node1、node2。一、怎么利用hadoop搭建自己的云计算 (1) 我们为了能够更加方便来识…

28 计算机网络

两台机器连接就构成的网络 计算机近距离构成的网络叫做局域网,lan;一根电缆连接几台电脑,相互之间通过电缆传输信息。最著名是以太网技术。 一台上传,其余都可以在电缆里收到。为了避免接受无意义信息,每台电脑前加一个

Phonegap和Titanium用作移动开发,各有哪些优缺点

Phonegap和Titanium都是流行的移动开发框架,各自具有独特的优缺点。1、Phonegap:优点包括易学习、跨平台兼容、社区支持丰富;缺点有性能限制、原生功能限制。2、Titanium:优点涵盖了原生体验、强大的性能、大量的自定义选项;缺点则是学习曲线较陡、社区支持有限。例如,Ph…

DBeaver如何插入一行新数据或者复制一行新数据,真方便

前言 我们在使用DBeaver时,经常是需要操作数据库表的,比如新加一行数据等。DBeaver给我们提供了快速的操作方法,今天就来介绍下。 如何插入新数据 首先,我们选中要插入数据的那个位置,就是要选中一行数据。然后,我们点击下面的这两个按钮,其中一个按钮是新增一行,一个按…

二叉树的递归遍历

二叉树的递归遍历(前、中、后序)二叉树的递归遍历 题目链接: 前序遍历: LeetCode 144 中序遍历: LeetCode 94 后序遍历: LeetCode 145 描述 给你二叉树的根节点 root ,返回它节点值的 前序 、 中序 、 后序 遍历。示例1:前序遍历输入:root = [1,null,2,3] 输出:[1,2,3]示…