upload-labs 靶场(1~5)

devtools/2024/11/27 15:33:48/

免责声明

本博客文章仅供教育和研究目的使用。本文中提到的所有信息和技术均基于公开来源和合法获取的知识。本文不鼓励或支持任何非法活动,包括但不限于未经授权访问计算机系统、网络或数据。

作者对于读者使用本文中的信息所导致的任何直接或间接后果不承担任何责任。包括但不限于因使用本文所述技术而可能导致的法律诉讼、财产损失、隐私泄露或其他任何形式的责任。

在进行任何渗透测试或安全研究之前,请确保您已获得所有必要的授权,并遵守适用的法律和道德准则。未经授权的安全测试可能违反法律,并可能导致严重的法律后果。

本文中的内容仅供参考,不应被视为专业建议。在进行任何安全相关活动之前,建议咨询具有相应资质的专业人士。

作者保留对本博客文章的所有权利,并有权在未经通知的情况下进行修改或删除。

正文部分

前期准备:

        目标:学习文件上传漏洞的绕过

        系统环境:

                攻击机:Windows 10

                靶机:192.168.162.100:8084(Ubuntu ===> docker ===> uploads-labs)

        工具:

                Google浏览器、BurpSuite

Pass-01

这一关有两种绕过方式

方法一:关闭浏览器的 JS 功能

根据源码可以看出验证在前端

直接关掉浏览器的 js 功能,上传冰蝎🐎

连接🐎

方法二:修改数据包

为了避免🐎冲突,先把前面上传的🐎删掉。选择一个图片文件提交,用 bp 抓住数据包。为什么不直接上传 php 文件?原因是文件验证在前端,提交的时候如果不是白名单中的文件格式就提交不了,更不会将数据发送给服务器,导致抓不到数据包

将数据包发给 Repeater,将文件名修改一下,测试一下是否会上传成功

测试完成后,将修改好的数据包 Ctrl+A,Ctrl+C,然后回到 Proxy,全选、粘贴将原本数据包替换

放包,使用冰蝎连接🐎即可

Pass-02

这一关通过源码可以得出,只能上传图片类型的文件,那么就创建一个 txt 文本文档,将🐎写入,然后修改文件后缀为图片类型的后缀

接着上传这个“图片”,抓包,修改数据包,测试步骤这里就不做演示了

按照我这个方法的话就只用修改文件名,如果上传的是个 php 文件,那么就需要修改文件的 MIME

两种方法都行。放包,连接🐎

Pass-03

通过源码可以看出,这一关设置了黑名单,php 类型就在其中,那么还有什么文件后缀可以当作 php 文件进行解析?不知道就找一下度娘

这个 phtml 一下就入了我的法眼,就用它吧

放包,连接🐎

怎么回事?连接失败,原来是后端给打编号了

重振旗鼓,再来一次

Pass-04

从源码看出这一关拉黑的文件后缀还是挺多的,不过有一个配置文件忘了拉黑,那就是 .htaccess

.htaccess 文件是 Apache 服务器中的一个配置文件,用于实现各种服务器配置功能,比如文件类型关联

这个配置的意思是,所有图像类型的文件都当作 php 文件处理,所以接下来就先上传 .htaccess,然后上传图片🐎

放包

连接🐎

Pass-05

这一关,限制了 .httaccess 文件,不过解放了 .ini 文件,那么有 .user.ini 这么一个文件

.user.ini 文件是PHP配置文件的一种,它允许在用户目录中覆盖默认的 PHP 配置。这种文件通常用于存储用户特定的设置和偏好,采用键值对的形式,每行代表一个设置,键值之间使用等号连接

最具有代表性的就是这两段

auto_prepend_file = "header.php"
auto_append_file = "footer.php"

这个的意思是,在运行每个 php 文件之前,都会将指定文件包含进去当作 php 文件进行解析,那么接下来就将这个文件上传上去,然后上传图片🐎

放包,连接🐎。诶?没连上,发现这个 PHP 版本有点问题,换一个靶机,用小皮搞

收工

每一关都认真对待了,没划水、没摸鱼


http://www.ppmy.cn/devtools/137429.html

相关文章

【已解决】python面试、竞赛编程问题:最长递增子序列和旅行商问题(TSP)

在面试、竞赛以及实际应用中,有几个常见的问题,比如今天尝试解决的:最长递增子序列和旅行商问题(TSP)。本文针对这两个问题如何分析和求解并使用python编程实现给出了详细的步骤,供参考学习。 一、最长递增子序列问题 问题背景 一个经典的算法问题:“最长递增子序列(…

vue实现滚动条滑动到底部分页调取后端接口加载数据

一、案例效果 二、前提条件 接口返回数据 三、案例代码 子组件 const $emit defineEmits([cloneItem, updateList]);const props defineProps({rightList: {type: Array,},chartTableData: {type: Array as () > ChartListType[],},deleteChartInfo: {type: Object,}…

LeetCode 3206.交替组 I:遍历

【LetMeFly】3206.交替组 I:遍历 力扣题目链接:https://leetcode.cn/problems/alternating-groups-i/ 给你一个整数数组 colors ,它表示一个由红色和蓝色瓷砖组成的环,第 i 块瓷砖的颜色为 colors[i] : colors[i] …

线上+线下≠新零售,6大互通诠释新零售的核心要点-亿发

新零售,这个词汇在近年来频繁出现在我们的视野中,它不仅仅是线上与线下的简单相加,而是一场深刻的商业变革。本文将通过6大互通的核心要点,为您揭示新零售的真正内涵。 1. 商品的互联互通 新零售模式下,商品的互联互…

Redis中HGETALL和ZRANGE命令

Redis中HGETALL和ZRANGE命令 简单来说 HGETALL 命令用于返回哈希表中,所有的字段和值。 ZRANGE 命令用于返回有序集中,指定区间内的成员。 HGETALL 在 Redis 中,HGETALL 是一个用于操作哈希(Hash)数据类型的命令&…

Qt SQL模块概述

Qt SQL支持的数据库 要在项目中使用 Qt SQL 模块&#xff0c;需要在项目配置文件中添加下面一条设置语句&#xff1a; Qt sql在头文件或源文件中使用 Qt SQL 模块中的类&#xff0c;可以使用包含语句&#xff1a; #include <QtSql>这样会将某个 Qt SQL 模块中的所有类…

远程控制软件:探究云计算和人工智能的融合

在数字化时代&#xff0c;远程控制工具已成为我们工作与生活的重要部分。用户能够通过网络远程操作和管理另一台计算机&#xff0c;极大地提升了工作效率和便捷性。随着人工智能&#xff08;AI&#xff09;和云计算技术的飞速发展&#xff0c;远程控制工具也迎来了新的发展机遇…

yolov11剪枝

思路&#xff1a;yolov11中的C3k2与yolov8的c2f的不同&#xff0c;所以与之前yolov8剪枝有稍许不同&#xff1b; 后续&#xff1a;会将剪枝流程写全&#xff0c;以及增加蒸馏、注意力、改loss&#xff1b; 注意&#xff1a; 1.在代码105行修改pruning.get_threshold(yolo.mo…