upload-labs靶场练习

01(JS前端认证)

客户端JS脚本有限制,本来想用上次笔记的方法来做(即改扩展名为.jpg,上传,抓包,改扩展名为.php,放行或者发送至repeater,改扩展名然后重发,再使用蚁剑连接),但是不知道是什么原因上传不成功,只好选择另一种方法来做

首先打开谷歌浏览器的设置,选择隐私与安全

选择网站设置

找到JavaScript然后选择“不允许网站使用JavaScript”(即关闭JS)

然后返回界面,直接上传一个php类型的一句话木马

就会自动识别为图片

右键点击图片复制图片地址

使用蚁剑连接成功,说明上传成功

也可以用hackbar构造传参,返回phpinfo界面即为传参成功

源码解读(关键部分在复制源码时已有解读):

function checkFile() {var file = document.getElementsByName('upload_file')[0].value;#获取用户选择的文件名if (file == null || file == "") {alert("请选择要上传的文件!");return false;}#检查用户是否选择文件//定义允许上传的文件类型var allow_ext = ".jpg|.png|.gif";//提取上传文件的类型var ext_name = file.substring(file.lastIndexOf("."));//判断上传文件类型是否允许上传if (allow_ext.indexOf(ext_name + "|") == -1) {var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;alert(errMsg);return false;}
}

02(MIME认证)

解读代码:

$is_upload = false;
$msg = null;#定义两个变量,is_upload标记文件是否上传,初始值为false,msg存储上传过程中的错误信息,初始值为null
if (isset($_POST['submit']))#检查是否点击了submit按钮,如果有就接着执行 {if (file_exists(UPLOAD_PATH))#检查上传目录UPLOAD_PATH是否存在 {if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif'))#检查文件类型是否为image/jpeg、image/png、image/gif {$temp_file = $_FILES['upload_file']['tmp_name'];$img_path = UPLOAD_PATH . '/' . $_FILES['upload_file']['name']            if (move_uploaded_file($temp_file, $img_path)) {$is_upload = true;} else {$msg = '上传出错!';#如果上传文件类型正确,则将该文件移动到目标路径,若移动失败则显示“上传出错!”}} else {$msg = '文件类型不正确,请重新上传!';#如果上传文件类型错误,则显示错误}} else {$msg = UPLOAD_PATH.'文件夹不存在,请手工创建!';}
}

通过其检查的是文件类型image/jpeg……可看出本题的基本思路是抓包修改content-type,选择一个一句话木马,上传并抓包发至重放器

将Content-Type改为 image/jpeg(只要是代码解释里面的三个都可)

发包后即可得到文件路径,使用蚁剑连接成功

03(php3、phtml绕过黑名单)

解读源码:

12行:定义两个变量,is_upload标记文件是否上传,初始值为false,msg存储上传过程中的错误信息,初始值为null

3:submit按钮是否被点击

4:检查上传目录是否存在

5-11:获取文件扩展名并将其转换为小写

13-22:检查扩展名,不允许‘.asp’、'.aspx'、'.php'、'.jsp'类型的文件上传(若没有这么多限制,只是不允许.php文件上传的话,可以通过剩下几个文件扩展名替代php),若是这些文件以外的文件上传,则正常上传,并且从第15行可以看出,路径由上传目录、当前日期时间(YmdHis格式)、4位随机数和文件扩展名组成

解题过程:

思路为可将文件扩展名改为.php3、.php4来绕过,但是新版本的phpstudy没有ts版本的php,所以就去下载了一个2018版的phpstudy

根据提示下载了运行库合集

下载完接着切换php版本(php-5.2.17+Apache)

打开设置

CTRL+f搜索addtype找到这句话

去掉#,并在后面添加内容,使其变为

保存后像第一次搭建网站一样把upload-labs放到phpstudy2018的WWW文件夹下,访问127.0.0.1即可开始做题

先上传一个一句话木马

bp抓包,修改文件后缀为.php3然后重发

复制并拼接文件路径

使用蚁剑连接即可

04(.htaccess绕过黑名单)

源码解析:
$is_upload = false;#初始化一个变量,表示文件是否上传成功
$msg = null;#初始化一个变量,用于存储上传过程中的提示信息
if (isset($_POST['submit']))#确认submit按钮是否被点击 {if (file_exists(UPLOAD_PATH))#检查上传目录是否存在 {$deny_ext = array(".php",".php5",".php4",".php3",".php2",".php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".ini");#不允许上传的文件扩展名,这里几乎隔绝了所有我们能更改来绕过的扩展名$file_name = trim($_FILES['upload_file']['name']);$file_name = deldot($file_name);//删除文件名末尾的点$file_ext = strrchr($file_name, '.');$file_ext = strtolower($file_ext); //转换为小写$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA$file_ext = trim($file_ext); //收尾去空#上面一大段都是为了提取文件扩展名if (!in_array($file_ext, $deny_ext)) {$temp_file = $_FILES['upload_file']['tmp_name'];$img_path = UPLOAD_PATH.'/'.$file_name;if (move_uploaded_file($temp_file, $img_path)) {$is_upload = true;} else {$msg = '上传出错!';}} else {$msg = '此文件不允许上传!';#查看文件扩展名是否在黑名单里,若是不在则正常上传并保存上传路径,若是在则提示“此文件不允许上传”}} else {$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';}
}

根据源码解读,该题属于大量的文件后缀被限制,即除了php外常见的可绕过的后缀都被限制,可尝试上传.htaccess后缀文件,但是此方法仅限于aoache服务器

知识点补充:
大佬的通关wp

.htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令。
.htaccess主要的作用有:URL重写、自定义错误页面、MIME类型配置以及访问权限控制等。主要体现在伪静态的应用、图片防盗链、自定义404错误页面、阻止/允许特定IP/IP段、目录浏览与主页、禁止访问指定文件类型、文件密码保护等。
.htaccess的用途范围主要针对当前目录。

创建.htaccess文件,代码如下:

方法一:
<FilesMatch "4.png">
SetHandler application/x-httpd-php
</FilesMatch>
#如果当前目录下有4.png,就会被解析为.php
 
方法二:
AddType application/x-httpd-php .png
#如果当前目录下有以.png结尾的文件,就会被解析为.php,.png后面也可以添加其他文件形式

解题过程:

一开始做不出来,后面去搜了别人的wp,说是nst版本的phpstudy做不出来,又换成2018版的phpstudy,但还是不行

首先编辑一个.htaccess文件上传并抓包发送至重发器

将文件名改为abc.jpg,文件内容改为一句话木马,重新发包

复制,拼接路径,使用蚁剑连接

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

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

相关文章

登录校验Cookie、Session、JWT

目录 基础知识&#xff1a;登录校验的场景 基础知识&#xff1a;会话 ​编辑方案一&#xff1a;Cookie 方案二&#xff1a;Session 方案三&#xff1a;令牌技术 JWT 令牌 基础知识&#xff1a;登录校验的场景 基础知识&#xff1a;会话 什么是会话&#xff1f;什么是会话跟…

Web端实时播放RTSP视频流(监控)

一、安装ffmpeg: 1、官网下载FFmpeg: Download FFmpeg 2、点击Windows图标,选第一个:Windows builds from gyan.dev 3、跳转到下载页面: 4、下载后放到合适的位置,不用安装,解压即可: 5、配置path 复制解压后的\bin路径,配置环境变量如图: <

【SPIE出版|EI、Scopus双检索】2025年绿色能源与环境系统国际学术会议(GEES 2025)

2025年绿色能源与环境系统国际学术会议&#xff08;GEES 2025&#xff09; 会议时间&#xff1a;2025年6月20-22日 会议地点&#xff1a;中国-湖北 最终截稿日期&#xff1a;2025年6月8日 注册截止时间&#xff1a;2025年6月8日 提交检索类型&#xff1a;EI Compendex 和 …

在21世纪的我用C语言探寻世界本质——字符函数和字符串函数(2)

人无完人&#xff0c;持之以恒&#xff0c;方能见真我&#xff01;&#xff01;&#xff01; 共同进步&#xff01;&#xff01; 文章目录 一、strncpy函数的使用二、strncat函数的使用三、strncmp函数的使用四、strstr的使用和模拟实现五、strtok函数的使用六、strerror和pe…

3D 视觉语言推理中的态势感知

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 概要 能够在 3D 空间中执行复杂的视觉语言推理任务是开发家用机器人和以人为本的具身 AI 的一个重要里程碑。在这项工作中&#xff0c;我们证明了 3D 视觉语言推理中一个关键而独特的挑战是态势感知&…

华为数据中心CE系列交换机级联M-LAG配置示例

M-LAG组网简介 M-LAG&#xff08;Multi-chassis Link Aggregation&#xff09;技术是一种跨设备的链路聚合技术&#xff0c;它通过将两台交换机组成一个逻辑设备&#xff0c;实现链路的负载分担和故障切换&#xff0c;从而提高网络的可靠性和稳定性。下面给大家详细介绍如何在…

Python Pyside6 加Sqlite3 写一个 通用 进销存 系统 初型

图: 说明: 进销存管理系统说明文档 功能模块 1. 首页 显示关键业务数据商品总数供应商总数本月采购金额本月销售金额显示预警信息库存不足预警待付款采购单待收款销售单2. 商品管理 商品信息维护商品编码(唯一标识)商品名称规格型号单位分类进货价销售价库存数量预警…

放大芯片参数阅读

一、芯片的增益能力 1. GBW&#xff08;增益带宽积&#xff09; 例如&#xff0c;GBW (typ) 1 MHz。 增益带宽积&#xff08;Gain Bandwidth Product&#xff09;是一个关键参数&#xff0c;用于计算在特定频率下的最大增益。 定义公式为&#xff1a; 增益带宽G…

编程工具箱(免费,离线可用)

https://www.yuque.com/huanmin-4bkaa/ii1hx1?# 《工具箱》 常用的大部分工具都有, 比如mysql可视化 redis可视化, json编辑器, 加解密等(免费,离线可用) 后续也会慢慢的集成

SpringBoot项目打war包要点

1. 修改pom文件packaging 2. 不使用内置tomcat 3. 加一个类 4. 修改外部tomcat配置文件 5. 修改nginx配置文件&#xff0c;构建集群 资料来自网络

探索与创作:2024年CSDN平台上的成长与突破

文章目录 我与CSDN的初次邂逅初学阶段的阅读CSDN&#xff1a;编程新手的避风港初学者的福音&#xff1a;细致入微的知识讲解考试复习神器&#xff1a;技术总结的“救命指南”曾经的自己&#xff1a;为何迟迟不迈出写博客的第一步兴趣萌芽&#xff1a;从“读”到“想写”的初体验…

Spring 核心技术解析【纯干货版】- Ⅶ:Spring 切面编程模块 Spring-Instrument 模块精讲

随着 Java 技术栈的不断发展&#xff0c;Spring 框架在应用开发中占据了举足轻重的地位。Spring 提供了丰富的模块来支持不同的应用场景&#xff0c;其中 spring-instrument 模块作为其中的一部分&#xff0c;提供了强大的类加载器增强功能。该模块通过字节码操作和类加载期织入…

微信小程序

一、小程序文件结构 1.目录结构 pages文件夹&#xff1a;存放【页面文件夹】&#xff0c;一个【页面文件夹】就是一个页面&#xff0c;存放着小程序页面文件。即pages中的每一个文件夹都存放着一个小程序页面的文件&#xff08;js、wxml、json、wxss&#xff09; 页面文件夹…

计算机网络-数据链路层

重点内容&#xff1a; (1) 数据链路层的点对点信道和广播信道的特点&#xff0c;以及这两种信道所使用的协议&#xff08; PPP协议以及 CSMA/CD 协议&#xff09;的特点。 (2) 数据链路层的三个基本问题&#xff1a;封装成帧、透明传输和差错检测。 (3) 以太网 MAC 层的…

Linux提权-02 sudo提权

文章目录 1. sudo 提权原理1.1 原理1.2 sudo文件配置 2. 提权利用方式2.1 sudo权限分配不当2.2 sudo脚本篡改2.3 sudo脚本参数利用2.4 sudo绕过路径执行2.5 sudo LD_PRELOAD环境变量2.6 sudo caching2.7 sudo令牌进程注入 3. 参考 1. sudo 提权原理 1.1 原理 sudo是一个用于在…

如何学习网络安全?有哪些小窍门?

学好网络安全其实没有所谓的捷径&#xff0c;也没有什么小窍门。 入门网络安全首先要有浓厚的学习兴趣&#xff0c;不然很容易就变成了从入门到放弃了。 其次要能静下心&#xff0c;踏踏实实的打好基础。如果你是零基础&#xff0c;建议从Web安全入手&#xff0c;课程难度相对…

AV1视频编解码简介、码流结构(OBU)

我的音视频/流媒体开源项目(github) 目录 一、AV1编码技术 二、AV1码流结构(OBU) 三、IVF文件格式 四、ffmpeg支持AV1 五、关于常见格式对AV1的封装 一、AV1编码技术 AV1是由开放媒体联盟(AOM&#xff0c;Alliance for Open Media)在2018年发布的&#xff0c;AV1的前身…

软考高级5个资格、中级常考4个资格简介及难易程度排序

一、软考高级5个资格 01、网络规划设计师 资格简介&#xff1a;网络规划设计师要求考生具备全面的网络规划、设计、部署和管理能力&#xff1b;该资格考试适合那些在网络规划和设计方面具有较好理论基础和较丰富从业经验的人员参加。 02、系统分析师 资格简介&#xff1a;系统分…

【21】Word:德国旅游业务❗

目录 题目 NO1.2.3 NO4 NO5.6 NO7 NO8.9.10.11 题目 NO1.2.3 F12&#xff1a;另存为布局→页面设置→页边距&#xff1a;上下左右选中“德国主要城市”→开始→字体对话框→字体/字号→文本效果&#xff1a;段落对话框→对齐方式/字符间距/段落间距 NO4 布局→表对话框…

Flink(十):DataStream API (七) 状态

1. 状态的定义 在 Apache Flink 中&#xff0c;状态&#xff08;State&#xff09; 是指在数据流处理过程中需要持久化和追踪的中间数据&#xff0c;它允许 Flink 在处理事件时保持上下文信息&#xff0c;从而支持复杂的流式计算任务&#xff0c;如聚合、窗口计算、联接等。状…