ctfshow web入门 文件上传

news/2025/1/12 16:03:55/文章来源:https://www.cnblogs.com/cxin5/p/18521075

Ctfshow

Web入门

151

 

查看源代码,发现只能上传.png的文件

用bp抓包.png的图片格式

添加一句话木马,文件格式修改成.php

 

 

 

对于上传成功的后门代码,

直接通过hackbar发送post包利用php内置system()函数执行

 

 

查看flag.php文件

 

 

 

152

和上一题做题步骤一样

 

 

 

 

但此题考点不同的是添加了后端验证

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

 

 

153

按照上一题的方法,发现失败

修改后缀大小,成功但无法解析

 

 

发现服务器是nginx

上传配置文件 .htaccess 或者 .user.ini

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

 

 

 

 

这道题它是要连 /upload/index.php

原因是是木马被自动包含进原来目录里的 php 文件,一般是index.php

 

 

154

按照第一题的方法,文件类型不行

更改大小写试试,将php换成phP

也不行

试试将<?phP一起换

成功

访问直接下载

继续上一题做法.user.ini

 

 

155

发现更改大小写都无法避免文件类型

猜测过滤了php

先上传.png文件

 

 

删除木马中的php

后续和上一题一样

 

 

156

和上一题一样只不过这一次过滤的一句话木马中的php和[ ]

但在php中{ }可以代替[ ]

其他做法就和上一题一样了

 

 

157

过滤的一句话木马中的php和[ ]和;

换一种方法

先上传.user.ini

后上传1.png

Bp抓包传入

<?=system('tac ../fl*')?>

 

直接访问url+upload/index.php

158

和上一题一样

159

过滤内容变为(

反引号``,在linux操作系统系统中我们可以使用反引号包裹命令去执行,而之前我们所有获取结果的操作都是使用命令得到

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

后续一样

160

空格、反引号被过滤了。命令执行相关的函数和方法给限制了。

文件包含,include可以不用括号,中间也可以不用空格。

log也被过滤,好可以字符串拼接。

<?=include"/var/l"."og/nginx/access.lo"."g"?>

先上传.user.ini,在上传1.png,用include同时传输php语句(可以url地址上get传)在User-Agent上传。

 

 

 

 

太乱了,查看源代码

 

 

 

161

直接上传文件显示文件类型不合格

带上文件头GIF89a

.user.ini同样带上文件头

 

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

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

相关文章

什么是软件即服务(SaaS)

软件即服务(SaaS)作为一种基于云计算的软件交付模式,具有多租户架构、网络访问、定制化和灵活性、安全性和可靠性等特点。它在商业和个人生活中都有广泛的应用,帮助企业降低成本、提高效率和灵活性,同时为个人用户提供便捷和定制化的应用体验。一、软件即服务(SaaS)的定…

如何学习 C 语言

# 如何学习 C 语言 在探索如何学习 C 语言的旅程中,关键步骤包括理解语言基础、实践编程技巧、熟悉标准库、掌握数据结构与算法、以及参与项目实战。首先,深入理解C语言的基础是至关重要的,它不仅包括语法规则和基本数据类型,还涉及指针、内存管理等高级概念。实践编程技巧…

Python 迭代器和生成器的区别

Python 迭代器和生成器的区别:1.迭代器的定义与创;2.生成器的定义与创建;3.迭代器和生成器的使用场景;4.性能对比。通过比较和对比,本文旨在提供一个全面的视角,帮助读者理解何时使用迭代器和生成器,以及如何有效地在Python编程中利用这两种工具。1.迭代器的定义与创建 …

线上服务正常运行一段时间后就开始出现STW超过1秒的young gc是怎么回事

线上服务在一段正常运行后出现STW(Stop-The-World)超过1秒的young gc(垃圾收集)问题可能涉及多个方面的原因:一、内存分配与管理策略;二、GC算法与配置;三、对象生命周期管理;四、系统资源与环境;五、代码质量与优化。在这些方面中,Java虚拟机的内存管理和垃圾收集策…

WPS Excel中配置下拉多选(VBA)

网上找到两种方案,一种利用数据选择其他单元格,也就是在其他单元格建数据。需求是模板,不合适 这里我用的VBA,踩了挺多坑,详细说下 首先更新WPS为最新版,确保可用VBA和JSA  确定使用VBA还是JSA,两种语法不同VBA较老,语法可靠些,推荐(本文使用VBA)JSA为新引入JS,但…

manim边做边学--通用三维坐标系

ThreeDAxes是Manim中用于创建三维坐标系的类。 在数学、物理和工程等领域,三维坐标系的绘制是非常重要的。 ThreeDAxes使得用户能够在动画中直观地展示三维空间中的对象和关系,从而提高演示文稿和教学的效果。 ThreeDAxes提供了多种参数,如坐标轴的范围、长度、颜色、粗细等…

KubeSphere v4 应用商店配置指南

在 KubeSphere v4 版本中,为保持平台的简洁性,系统默认移除了内置应用商店中的应用。用户可以按照下列步骤进行手动配置和添加。注意:应用商店和扩展市场有所不同,扩展市场的使用方法将在后续文档中详细介绍。Helm Repo 源:安装过程中需要从源下载 Chart 包,确保源可用并…

Go语言的动态链接库(DLL)创建和使用

# Go语言的动态链接库(DLL)创建和使用 在讨论Go语言的动态链接库(DLL)创建和使用时,核心要点包括:创建DLL的步骤、调用DLL中的函数、跨平台兼容性问题、性能优化策略。创建DLL的步骤是理解和实践Go语言动态链接库的基础,涉及编写DLL源代码、编译为DLL文件以及确保DLL在目…

DNS介绍与实现方法

简介:域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。是一种可以将域名和IP地址相互映射的以层次结构分布的数据库系,允许终端用户设备将给定的人类可读URL转换为网络可以理解的机器可用IP地址。 工作原理:DNS是一种基于TCP/UDP可以将域名和IP地址相互映射的…

采集电力 IEC104 转 profinet IO 项目案例

VFBOX协议转换网关支持PLC,modbus,EthernetIP,Profinet,CCLink,EtherCAT,IEC61850,IEC104,bacnet,DLT645,HJ212,opc ua,opc da,DNP3。目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 4 配置VFBOX网关采集IEC104设备数据 2 5 用PROFINET IO协议转发数据 4 …

一个简单的 ASP.NET Core 依赖注入例子,提高代码的可维护性和可扩展性

依赖注入可以提高代码的可维护性、可测试性、可替换性和可扩展性,降低组件之间的耦合度,使得代码更加清晰和灵活,ASP.NET Core 提供了内置的依赖注入容器,可以帮助我们轻松地将服务注册到容器中前言:什么是依赖注入 依赖注入可以提高代码的可维护性、可测试性、可替换性和…