当前位置: 首页 > news >正文

Upload-labs通关

Upload-labs通关教程

1、pass-01

尝试把webshell传入到服务器,发现服务器对文件后缀名进行过滤。

请添加图片描述

绕过方法1:修改后缀

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

绕过方法2:禁用JS

安装Quick Javascript Switcher插件,关闭前端JS

JS关闭后直接上传php文件,发现上传成功
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、Pass-02

尝试上传php文件,发现同样对其进行过滤。

在这里插入图片描述

尝试把webshell后缀名改为png格式上传,发现可以上传。

在这里插入图片描述

通过BurpSuite截获数据,将文件名改为PHP文件即可绕过。

在这里插入图片描述

2、Pass-03

尝试第二关的方法,发现存在文件后缀黑名单

在这里插入图片描述

上传webshell.php5文件(直接修改php后缀为php5),因为已经在配置文件加入了.php5后缀的验证,所以.php5既可以绕过黑名单,网站也能解析。

在这里插入图片描述

但是蚁剑无法连接,原因服务器没允许,要想可以就修改apache的配置文件。

在这里插入图片描述

文件位置:phpstudy–>其他菜单选项–>打开配置文件–>httpd-conf。

在文件中加入:AddType application/x-httpd-php .php .phtml .phps .php5 .pht .html,如下所示。

目的是使浏览器能解析带有以下后缀的文件。保存,重启服务。

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

在这里插入图片描述

4、Pass-04

查看源代码,发现黑名单禁止了很多后缀文件通过,可以用.htaccess进行绕过。

简单来说.htaccess文件的作用就是把当前目录的所有文件都当作php解析,无论上传什么文件都当作php执行。

在这里插入图片描述

.htaccess 是配置文件 通常位于网站的根目录或特定的文件中,并影响该目录及子目录。每个目录都可以有这个文件。

httpd.conf 是全局的文件,整个服务器的 管理员才可以修改,并且要重启

.htaccess文件可以通过文本编辑器直接进行修改或创建,且修改后会立马生效,不用重启

使用.htaccess的前提是

①.mod_rewrite模块开启。(php是默认开启的)

②.AllowOverride All

创建一个.htaccess文件,里面的内容为如下:

AddType application/x-httpd-php .jpg

这个文件的目的是把上传的.jpg文件全部转化成.php文件

在这里插入图片描述

特殊情况:

很多windows操作系统是禁止将文件名设置为空的,但是我们可以用cmd命令来实现。

首先新建一个名为1.txt的文件,然后输入上述代码。接着在该文件夹下打开cmd窗口,输入:

ren 1.txt .htaccess

先上传.htaccess,再上传webshell.jpg。

上传webshell.jpg的时候用BurpSuite抓包,可以发送到重发器,在回显包中记住路径。

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

5、Pass-05

这题连.htaccess也过滤掉了
在这里插入图片描述

查看源码:

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {if (file_exists(UPLOAD_PATH)) {$deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".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",".htaccess");$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 . '文件夹不存在,请手工创建!';}
}

可以看到这里是先删除文件最后的一个逗号和空格然后再寻找处后的文件名的最后一个逗号,再对该逗号后面(就是文件扩展名)进行变小写再去除::$DATA字符串

发现删除了文件末尾的.且进行了首尾去空,尝试使用BurpSuite拦截修改数据为webshell.php. .发现成功绕过

在这里插入图片描述

上传成功

在这里插入图片描述

6、Pass-06

检查源码发现缺少大小写检验,绕过方法直接BurpSuite进行抓包修改,但不能为黑名单中的后缀名。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

7、Pass-07

观察源码发现在处理尾缀的时候少过滤了空格于是可以抓爆修改文件尾缀。

在这里插入图片描述

8、Pass-08

观察源码发现在处理尾缀的时候少过滤了于是可以抓爆修改文件尾缀。

在这里插入图片描述

9、Pass-09

观察源码发现在处理尾缀的时候少对特殊字符::$DATA的过滤于是可以抓爆修改文件尾缀。

::$DATA 后缀在 Windows 操作系统中表示文件的数据流(Data Stream)。Windows 文件系统,特别是 NTFS 文件系统,支持附加数据流(Alternate Data Streams,简称 ADS)。在 NTFS 文件系统中,文件不仅可以包含主数据流(默认数据流),还可以有附加的隐含数据流,这些数据流不会被标准文件查看工具直接看到。

当看到 ::$DATA 时,通常指的是文件的默认数据流(即主数据流),但文件可能还会有其他数据流隐藏在其中,这些数据流可以用来存储额外的信息,如元数据、隐藏的文件内容,甚至恶意代码。

在这里插入图片描述

10、Pass-10

后端校验 PHP 代码,从上可知其中定义了文件后缀名黑名单,黑名单里几乎包含了所有可解析的后缀名、.htaccess以及.ini,与此同时脚本还会对上传文件名进行过滤,包括首尾去空、删除文件名末尾的点、将字符转换为小写、去除字符串::$DATA等。

但由于只对点进行了单次过滤,因此如果我们上传webshell.php. .最终会过滤为webshell.php.这样也就演变成了第八题。

虽然以上几题都能通过这种方式绕过限制,但是这并不意味着我们要“一招鲜,吃遍天”,而学习多种绕过姿势才是我们的目的。

在这里插入图片描述

11、Pass-11

查看源码,发现其中定义了文件后缀名黑名单,黑名单里几乎包含了所有可解析的后缀名、.htaccess以及.ini,当上传文件的后缀名与黑名单匹配时会自动去除后缀名,没有了后缀名文件自然也无法解析,但由于只过滤单次后缀名,因此我们可以双写后缀名绕过限制。

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {if (file_exists(UPLOAD_PATH)) {$deny_ext = array("php","php5","php4","php3","php2","html","htm","phtml","pht","jsp","jspa","jspx","jsw","jsv","jspf","jtml","asp","aspx","asa","asax","ascx","ashx","asmx","cer","swf","htaccess","ini");$file_name = trim($_FILES['upload_file']['name']);$file_name = str_ireplace($deny_ext,"", $file_name);$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 = UPLOAD_PATH . '文件夹不存在,请手工创建!';}
}

在这里插入图片描述

12、Pass-12

这一关白名单,通过Get %00截断可绕过白名单限制,但需确保PHP版本低于5.3.4且magic_quotes_gpc已关闭。

PHP函数如move_uploaded_file在底层C语言实现时,会因遇到0x00(URL编码为%00)截断字符串。利用此特性,可绕过某些文件上传限制。

在这里插入图片描述

13、Pass-13

这一关白名单,通过POST %00截断可绕过白名单限制,但需确保PHP版本低于5.3.4且magic_quotes_gpc已关闭。

如果启用了magic_quotes_gpc,PHP会自动转义所有通过 GET、POST 和 COOKIE 数据传递的特殊字符,这可能会阻止 %00 截断攻击。但这个配置项在PHP 5.4.0中被移除。

首先进行抓包,在upload后面写一个php文件,在文件的后面加一个空格符号

在这里插入图片描述

点开十六进制页面 ,找到刚才输入的空格,将其改为00,放行即可

在这里插入图片描述

14、Pass-14

这一关是图片马文件包含绕过,首先,将一个jpg文件和php文件合成图片马,然后将图片马上传。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下面这段代码中通过获取URL中的file参数,进行文件包含。执行图片文件。

http://192.168.197.133/upload-labs-master/include.php?file=./upload/9720241027120850.jpg

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

15、Pass-15

同14关一致,多了一个函数

$info = getimagesize($filename);

利用检测文件头来判断上传的文件是不是图像文件,同样是利用上传图片马和文件包含漏洞。

16、Pass-16

也是一样进行文件类型判断,没有对图片马进行判断,照样可以使用第14关的绕过方法。

17、Pass-17

在这里插入图片描述

上传的图片经过了后缀名、内容类型和imagecreatefromgif函数的严格验证,确保其为GIF格式。随后图片经过了二次渲染处理。

攻击步骤:

1、文件准备(做gif图片马)
在这里插入图片描述
在这里插入图片描述

通过010Editor查看木马是否插入

在这里插入图片描述

2、重新对渲染的图片马修改

上传图片马,然后下载下来查看

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

使用010Editor检查发现木马没有了

在这里插入图片描述

查找渲染的分离点,可以使用010Editor的同步对比功能

在这里插入图片描述

可以看到,绿色的部分开始有变化

在这里插入图片描述

所以,我们可以利用在没有发生改变的地方再次插入一句话木马**(注意,是插入到渲染过的图片上)**

复制一句话木马的16进制

在这里插入图片描述

然后在没有被渲染的地方插入即可

在这里插入图片描述

3、将修改后的文件上传,使用文件包含进行利用

在这里插入图片描述

使用文件包含利用

http://192.168.197.133/upload-labs-master/include.php?file=./upload/22399.gif

使用蚁剑进行连接

在这里插入图片描述

18、Pass-18

条件竞争

19、Pass-19

条件竞争

20、Pass-20

黑名单

21、Pass-21

数组绕过

片转存中…(img-i1NP8uds-1730036138285)]

然后在没有被渲染的地方插入即可

[外链图片转存中…(img-NcDYyrs1-1730036138285)]

3、将修改后的文件上传,使用文件包含进行利用

[外链图片转存中…(img-BNkAWuCt-1730036138285)]

使用文件包含利用

http://192.168.197.133/upload-labs-master/include.php?file=./upload/22399.gif

使用蚁剑进行连接

[外链图片转存中…(img-gPXAvWmp-1730036138286)]

18、Pass-18

条件竞争

19、Pass-19

条件竞争

20、Pass-20

黑名单

21、Pass-21

数组绕过


http://www.mrgr.cn/news/59868.html

相关文章:

  • esp32学习:语音识别教程esp-skainet库的使用
  • 第十八届联合国世界旅游组织/亚太旅游协会旅游趋势与展望大会在广西桂林开幕
  • 代码随想录算法训练营第四十六天 | 188.买卖股票的最佳时机IV、309.最佳买卖股票时机含冷冻期 、714.买卖股票的最佳时机含手续费
  • 基于海思soc的智能产品开发(快速入门)
  • 为什么会有树这样的数据结构,使用树有什么好处 和其他数据结构对比
  • 用友U8接口-库存管理(7)
  • Python 从入门到实战41(NumPy数值计算)
  • kNN 的花式用法(原来还能这么玩 kNN)
  • Java NIO 应知应会 (一)
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发六,使用SDLVSQT显示yuv文件
  • UE ---- 射击游戏
  • 【Linux网络】传输层协议UDP与TCP
  • Mochi 1:AI视频生成领域的创新与应用
  • 绝了,这款播放器让发烧友疯狂种草,堪称音乐神器
  • 从零入门扣子Bot开发
  • Map和Set(数据结构)
  • 网络学习/复习2套接字
  • Linux基础-基础命令和相关知识4
  • 实现mysql和es的数据同步以及es的集群
  • 刷c语言练习题13(牛客网)
  • 【数据结构与算法】《Java 算法宝典:探秘从排序到回溯的奇妙世界》
  • 银河麒麟V10系统下libopenblas.so.0和libllmlmf库的安装
  • QT 实现自定义动态选择指示器
  • GPU的使用寿命可能只有1~3年
  • SpringBoot整合API接口做快递智能识别
  • 蓝桥杯普及题