【web靶场】之upload-labs专项训练(基于BUUCTF平台)

前言

该靶场,是通过平台BUUCTF在线评测中的靶场进行的,基于linux搭建的

当然若是想要该靶场,可以采用github上的醒目,点击后面文字即可访问c0ny1/upload-labs: 一个想帮你总结所有类型的上传漏洞的靶场

或者本人分享在网盘中,可通过链接https://pan.quark.cn/s/fe695fdbcbfd下载其中的upload-labs

upload-labs使用

pass-01

打开靶场,让我们上传图片,任务是让上传一个webshell,因为靶场是PHP搭建,所以这里使用最简单的webshell,一句话木马

image-20240706192953310

直接上传shell.php测试,发现有提示

查看html的form表单,是否只有前端验证,发现提交给一个函数,说明是前端验证的

在前端中搜索有无这个函数,发现有这个函数,那么就可以把浏览器设置成不加载js资源,使得这个函数失效

刷新页面,再次上传

这里就已经上传到服务器中,可以使用第三方工具进行连接,如蚁🗡

可以查看文件等操作,到这里说明成功拿到网站的某个权限了

Pass-02

打开后直接上传shell.php测试,发现提示

查看是否有前端js的影响,发现虽然有函数的影响,但是在这里直接搜索,已经搜索不到,验证不在浏览器的前端了,在后端的验证,产生数据包,使用burpsuit或者yakit进行抓取

为什么上传不了呢,最后要上传的是脚本文件,也就是,以这里来说,上传的文件要是脚本文件才会被执行。如果是图片的话,数据包的形式是怎么样的,这里再抓取一个图片的数据包进行对比

对比发现filename与content-type不一样,文件名这个肯定不一样,主要是就是content-type了,这个可以上网查,文件类型的不同,这个处理也会不一样的。那么这里抓取包的时候,把content-type修改,会不会被识别成图片,然后上传呢。这里只对content-type进行验证

转发修改的数据包后,脚本上传成功

这里就已经成功

Pass-03

直接上传php文件

抓取数据包进行修改content-type的值

但是还是提示,不允许上传这几个脚本文件,说明设置了黑名单

想到他设置黑名单,但是有的脚本语言有扩展名,不只只有本来的一种形式,这里如php,有很多。但是这个需要服务器开启了对应的解析,不然这个也是没有作用,所以这里需要一个个试

apache服务器为例,需要把这个添加AddType application/x-httpd-php .php .phtml .phps .php5 .pht那么才会解析这加的几种文件类型

修改其中的一个扩展名,上传成功

并且,开链接后,也是以脚本文件去处理的,代码可执行

Pass04

这里用到.htaccess文件,这里因为发现基本上所有的脚本文件都被拉黑了,所以这个文件若没有,则可以上传这个文件,来让上传的图片作为脚本执行。

.htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过.htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

.htaccess文件(或者”分布式配置文件”)提供了针对每个目录改变配置的方法,即在一个特定的目录中放置一个包含指令的文件,其中的指令作用于此目录及其所有子目录但是很重要的、需要注意的是,其上级目录也可能会有.htaccess文件,而指令是按查找顺序依次生效的,所以一个特定目录下的.htaccess文件中的指令可能会覆盖其上级目录中的.htaccess文件中的指令,即子目录中的指令会覆盖父目录或者主配置文件中的指令。

文件所在的目录及其所有子目录,若要启动配置文件,我们需要在服务器的主配置文件将 AllowOverride 设置为 All
AllowOverride All  #启动.htaccess文件的使用


在.htaccss文件添加下面的语句即可解析

<FilesMatch "创建的含有脚本文件的图片">
SetHandler application/x-httpd-php
</FilesMatch>
如:
<FilesMatch "1.jpg">
SetHandler application/x-httpd-php
</FilesMatch>

或者添加,是把.jpg映射成脚本文件
AddType  application/x-httpd-php  .jpg

为什么确定是apache,然后使用.htaccess呢,因为在打开一个不存在的链接时,报出的错误

然后这里需要注意,apache中间件的解析后缀,是从右往左,若是碰到不能解析的或不知道的,会继续往左,直到碰到apache可解析的,这时文件就确定了apache解析类型

如:1.jpg.php.ccccc		apache从右解析,发现不知道ccccc是什么继续往左,碰到php,可以解析,于是最终apache解析的文件是1.jpg.php

这里有两种解法,不过这里先把脚本换成phpinfo(),这样不需要每次连接来确定是否解析了

1、修改后缀名

抓取数据包,把后缀名修改为apache不知道,这样,因为文件的特性,不能判断是php脚本文件,而且最终解析时,还会以php脚本处理

2、 利用.htaccess来把含有php语言的图片,能够作为脚本处理

创建带有脚本的图片,并创建.htaccess文件,并加入语句

<FilesMatch "phpinfo.jpg">
SetHandler application/x-httpd-php
</FilesMatch>

或者
AddType  application/x-httpd-php  .jpg

上传.htaccess文件

提示403,无权访问,但是上传成功

再次上传图片,可以看到文件依然是jpg格式,但是以脚本解析了。

Pass05

上传phpinfo文件后,以之前去在后缀名加ccc,上传成功,但是打开链接发现,这次是把php去除了,也就是进行了文件名中的字符匹配。

不知道过滤的严谨性,先把php大小写,试试能不能绕过,发现可以

Pass06

空格绕过,在文件后缀名处,通过抓包加上空格,然后即可上传成功,不过因为上传是上传了,但是访问的时候没有,不知道什么原因

Pass07

通过抓包,在后缀名php后,加上.即可绕过,因为这种不是正则表达式的过滤,是完整的名称,所以这种特殊字符可以绕过

Pass08

这关其实是利用 windows系统一个命名特性,系统如果文件名+"::$DATA"会把之后的数据当成文件流处理,不会检测后缀名,且保持之前的文件名,他的目的就是不检查后缀名

上传文件名为:测试.php::$DATA系统会自动去掉末尾的变成"测试.php或者xxx.php"

所以这里注意是windows系统,我这里靶场是在linux,所以这个不行

Pass09

这关其实是代码的一个问题,看代码可以看出它只去掉一次空格和点,举个例:测试.php. . 最后代码执行完后变成 测试.php. 这个代码漏洞在之前的关卡大多少也是可以用到这个漏洞过关的,这个靶场本身就是学习用的所以还是每个关卡学习一个方法最好

Pass10

移除php等脚本后缀名称,如果这里他只进行了一次移除,那么就可以采用双写的方法绕过

Pass11

这关就可以用 %00截断来绕过它是地址上的截断,但注意是get请求和版本 PHP版本得小于5.3版本才能用这个%00截断,如果版本没问题没成功可能是编码的问题 例如: hanniu8.com/up/r.php%00cesho.gif 遇到 后会将 %00后面的去掉,变成: hanniu8.com/up/r.php

这里靶场问题,可能是php版本,无法进行

Pass12

与11一样,不过这里是在post里截断,条件与上面一样,php的版本问题

Pass13

首先要制造图片马

然后直接上传即可,但是是jpg格式,无法以脚本运行

但是给了一个文件包含漏洞的文件

点击后即可有php文件

利用这个文件,来使图片马生效

使用软件连接webshell

Pass14

制造图片马,这种制造是以真实的图片结合起来的,所以可以通过大部分的文件头检测

和13一样,直接上传,然后利用文件包含漏洞即可

Pass15

与上面一样,先生成

Pass16

首先上传图片,经测试,只有gif文件可以上传成功,从代码审计的话,也能看出来。

然后制造gif的图片马,直接上传,但是上传后的图片,却不能从文件包含漏洞那里连接第三方软件了,猜测图片二次渲染时,可能把代码去掉了,把上传的图片下载,然后与原始图片进行十六进制的比较,在两个图片同样的地方,插入脚本语言,进行测试

相同的地方,插入<?php phpinfo();?>,重新上传,然后就可以看到

Pass17

move_uploaded_file()函数将上传文件临时保存,再进行判断,如果不在白名单里则unlink()删除,在的话就rename()重命名,所以这里存在条件竞争。由此也就产生了漏洞,会有一个短暂的时间将我们上传的webshell存储在目录下,但是这个时间相当相当短暂,以至于,你打开上传目录,点击上传文件,你连影子都看不到就已经没了,所以这个时候我们先抓包,然后发送到intruder模块。进行无限制的请求,总会有一个可以。

一个intruder模块中的请求用于发送php文件到服务器中,另一个intruder模块用于请求上传之后的php文件地址

    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 = '上传出错!';
    }
}

Pass18

基本上和17一样,都是条件竞争

是利用Apache的解析漏洞,不管最后后缀为什么,只要是.php.*结尾,就会被Apache服务器解析成php文件 提交类似webshell.php.7z的文件,配合条件竞争上传,同17

Pass19

可以使用%00截断,不过和前面一样,php的版本,因环境,我这里不行

move_uploaded_file()函数会忽略掉文件末尾的/. 所以上传文件名为webshell.php/.即可绕过

Apache文件解析漏洞同样可以利用,参考Pass-19

.空格同样可以绕过,参考Pass-05

pass20

数组绕过,参考链接Upload-labs Pass-20 数组绕过_uploadlabs baynk-CSDN博客

保存名称可自己设定,但是一定要与下面一致

原数据包

修改后的,可以上传成功的

结果,这里的链接是后来的图,正常上面成功的话,就是/upload/20.php.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ES 的倒排索引

目录 什么是 elasticSearch。 什么是倒排索引 Term Index 是什么 Stored Fields 是什么 Doc Values 是什么 segment lucene 是什么 高性能 高扩展性 高可用 Node 角色分化 去中心化 ES 是什么? ES 和 Kafka 的架构差异 ES 的写入流程 ES 的搜索流程 查询阶段…

微服务电商平台课程六:后端代码框架认识

本地环境搭建好,大家可以进行调试,并能够修改其中代码。 后端技术栈 Spring Boot是伴随着Spring4.0共同诞生的,它的目的就是简化spring的配置及开发,并协助开发人员可以整体管理应用程序的配置而不再像以前那样需要做大量的配置工作,它提供了很多开发组件,并且内嵌了we…

Unity教程(二十)战斗系统 角色反击

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程&#xff08;零&#xff09;Unity和VS的使用相关内容 Unity教程&#xff08;一&#xff09;开始学习状态机 Unity教程&#xff08;二&#xff09;角色移动的实现 Unity教程&#xff08;三&#xff09;角色跳跃的实现 Unity教程&…

Garnet:微软官方基于.Net 8开源缓存系统,可无需任何改动直接替代Redis,而且还更高性能!

近日微软官方开源了一个开源缓存系统&#xff0c;可完全替代Redis。 01 项目简介 Garnet是微软官方基于.Net 8开发的、开源高性能远程缓存存储系统&#xff0c;支持单节点、集群。 Garnet使用的是当前流行的 RESP 协议&#xff0c;使得当前大多数编程语言现成的 Redis 客户端…

java项目之网上点餐系统源码(springboot+mysql+vue)

大家好我是风歌&#xff0c;曾担任某大厂java架构师&#xff0c;如今专注java毕设领域。今天要和大家聊的是一款基于springboot的网上点餐系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 网上点餐系统的主要使用者分为管理员登录…

深入Android架构(从线程到AIDL)_23 活用IBinder接口于近程通信01

1、 在同一进程里活用IBinder接口 议题 1. myActivity对象是谁创建的呢? 2. myService对象是谁创建的呢? 3. 当myService类里有个f1()函数&#xff0c;如何去调用它呢? 4. 必须先取得myService对象的指针&#xff0c;才能调用f1()函数去存取对象的属性(Attribute)值。 …

拥抱HarmonyOS之高效使用DevEco

拥抱HarmonyOS之高效使用DevEco 前半年对公司的IM SDK进行了鸿蒙化&#xff0c;半年过去系统已经伴随APP上线应用市场&#xff0c;总结一些适配过程中的经验技巧&#xff0c;希望对大家有用。 1.应用AI翻译代码 IM SDK和普通应用的最大差异是逻辑性代码比较多&#xff0c;使…

RT-DETR代码详解(官方pytorch版)——参数配置(1)

前言 RT-DETR虽然是DETR系列&#xff0c;但是它的代码结构和之前的DETR系列代码不一样。 它是通过很多的yaml文件进行参数配置&#xff0c;和之前在train.py的parser argparse.ArgumentParser()去配置所有参数不同&#xff0c;所以刚开始不熟悉代码的时候可能不知道在哪儿修…

Halcon在linux及ARM上的安装及c++工程化

一、HALCON下载 建议到HALCON官方下载页选择linux版本下载,压缩包名为MVTec_HALCON_Progress-18.11.0.1-linux(x64-aarch64-armv7a)-FullVersion.tar.gz。下载前需要登录HALCON帐号,如果没有请自行注册,填写一些基本信息然后激活邮件,操作方便简易。 下载许可证文件 该许…

单通道串口服务器(三格电子)

一、产品介绍 1.1 功能简介 SG-TCP232-110 是一款用来进行串口数据和网口数据转换的设备。解决普通 串口设备在 Internet 上的联网问题。 设备的串口部分提供一个 232 接口和一个 485 接口&#xff0c;两个接口内部连接&#xff0c;同 时只能使用一个口工作。 设 备 的网 口…

Figma如何装中文字体-PingFang苹方字体、Alibaba PuHuiTi阿里普惠

**写在前面&#xff1a; 工具类软件更新迭代如此快的世界&#xff0c;不能靠历史知识来做操作反应。需要着眼于当下工具的形态来思考用法。另外&#xff0c;有人说&#xff0c;当前的用户越来越少发教程类的图文消息了&#xff08;转去了视频&#xff09;&#xff0c;现在很多…

JVM实战—13.OOM的生产案例

大纲 1.每秒仅上百请求的系统为何会OOM(RPC超时时间设置过长导致QPS翻几倍) 2.Jetty服务器的NIO机制如何导致堆外内存溢出(S区太小 禁NIO的显式GC) 3.一次微服务架构下的RPC调用引发的OOM故障排查实践(MAT案例) 4.一次没有WHERE条件的SQL语句引发的OOM问题排查实践(使用MA…

Photoshop PS批处理操作教程(批量修改图片尺寸、参数等)

前言 ‌Photoshop批处理的主要作用‌是通过自动化处理一系列相似的操作来同时应用于多张图片&#xff0c;从而节省时间和精力&#xff0c;提高工作效率。批处理功能特别适用于需要批量处理的任务&#xff0c;如图像尺寸调整、颜色校正、水印添加等‌。 操作步骤 1.创建动作 …

【物联网原理与运用】知识点总结(上)

目录 名词解释汇总 第一章 物联网概述 1.1物联网的基本概念及演进 1.2 物联网的内涵 1.3 物联网的特性——泛在性 1.4 物联网的基本特征与属性&#xff08;五大功能域&#xff09; 1.5 物联网的体系结构 1.6 物联网的关键技术 1.7 物联网的应用领域 第二章 感知与识别技术 2.1 …

新车月交付突破2万辆!小鹏汽车“激活”智驾之困待解

首次突破月交付2万辆规模的小鹏汽车&#xff0c;稳吗&#xff1f; 本周&#xff0c;高工智能汽车研究院发布的最新监测数据显示&#xff0c;2024年11月&#xff0c;小鹏汽车在国内市场&#xff08;不含出口&#xff09;交付量&#xff08;上险口径&#xff0c;下同&#xff09…

基于Springboot+Vue的仓库管理系统

开发一个基于Spring Boot和Vue的仓库管理系统涉及到前端和后端的开发。本文呢&#xff0c;给出一个简单的开发步骤指南&#xff0c;用于指导初入的新手小白如何开始构建这样一个系统&#xff0c;如果**你想直接学习全部内容&#xff0c;可以直接拉到文末哦。** 开始之前呢给小…

java项目之ONLY在线商城系统设计与实现源码(springboot+vue+mysql)

大家好我是风歌&#xff0c;曾担任某大厂java架构师&#xff0c;如今专注java毕设领域。今天要和大家聊的是一款基于springboot的ONLY在线商城系统设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; ONLY在线商城系统设计与实…

java后端对接飞书登陆

java后端对接飞书登陆 项目要求对接第三方登陆&#xff0c;飞书登陆&#xff0c;次笔记仅针对java后端&#xff0c;在看本笔记前&#xff0c;默认已在飞书开发方已建立了应用&#xff0c;并获取到了appid和appsecret。后端要做的其实很简单&#xff0c;基本都是前端做的&…

【2025最新计算机毕业设计】基于SpringBoot+Vue奶茶点单系统(高质量源码,提供文档,免费部署到本地)

作者简介&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容&#xff1a;&#x1f31f;Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…

import语句详解

在 Java 中&#xff0c;import 语句用于引入其他包中的类、接口或静态成员&#xff0c;以便在当前源文件中直接使用它们&#xff0c;而不需要写完整的类名&#xff08;包括包名&#xff09;。以下是 import 语句的详细解释和使用方法&#xff1a; 一、import语句的基本概念 定…