upload-labs靶场全通关

2023-11-15

pass-1

首先我们新建一个php的webshell文件

在这里我写了一个rabb1t.php的shell文件

内容为这个样子

在这里插入图片描述

然后我们把它的后缀改为img,然后我们在upload上选择这个文件进行上传并用burpsuit进行抓包

在这里插入图片描述

在这里插入图片描述

把红框处的后缀从img在改回来

上传成功后我们用蚁剑去连接shell(上传失败的原因可能是靶场中没有upload目录,我们可以手动建立一个,并且记得把权限调到最高777)

路径是ip地址加上/upload/rabb1t.php

在这里插入图片描述

pass-2

第二题和第一题差不多,为了区别我把shell改名成了rabb2t.php

在这里插入图片描述

在上传时抓包,我们把框中内容改成如图所示,改成图片格式就行

然后用蚁剑去连就好了

pass-3

第三题把php的后缀加入了黑名单,我们可以在php后加数字来进行绕过

在这里插入图片描述

我们可以直接把文件名改了也可以在红框这里去改发包里的文件名

在这里插入图片描述

这个shell穿进去会改名字我们找到相应的文件

就可以用蚁剑去getshell了

请添加图片描述

进去之后可以看到我们的shell文件

pass-4

第四题禁止了很多后缀

请添加图片描述

所以这时候就需要尝试使用.htaccess重写文件解析绕过

我们新建一个文件就叫.htaccess,在里面写入如下内容请添加图片描述

请添加图片描述

然后我们将这个文件传上去

在这里插入图片描述

我们在把shell后缀改成图片的格式(img或者png)在传上去,.htaccess文件会将这个重新解析成webshell

我们就可以用蚁剑连接了

在这里插入图片描述

pass-5

第五题和之前的差不多我们可以用改变后缀大小写绕过

在这里插入图片描述

上传之后名字会改变

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

pass-6

第六关禁止常见后缀与大小写混用绕过
可以使用后缀加空格进行绕过

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

pass-7

第七关禁止上传所有可以解析的后缀,这一关黑名单,没有使用deldot()过滤文件名末尾的点,
使用shell后加.绕过(对文件命名时最后一个字符为.会自动忽略)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

pass-8

使用webshell后加::$DATA绕过

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

pass-9

第九关只允许上传.jpg|.png|.gif后缀的文件

这一关黑名单,最后上传路径直接使用文件名进行拼接,而且只对文件名进行

file_name = deldot(filename)

操作去除文件名末尾的点,构造后缀绕过黑名单

补充知识:deldot()函数从后向前检测,当检测到末尾的第一个点时会继续它的检测,但是遇到空格会停下来

上传rabb9t.php 然后用bp改后缀加点 空格 点(即文件名为rabb9t.php. .)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

pass-10

本题会去除脚本后缀,源码中将可以当成php解析的后缀都替换成空

在这里插入图片描述

所以我们的方法使用双写进行绕过

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

pass-11

这一关我们看代码,可以得知是一个白名单,只允许上传’jpg’,‘png’,'gif’格式的文件。但是上传路径是可以控制的,可以使用%00进行截断
截断条件: php版本 小于5.3.4 大于此版本的修复了

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

pass-12

在这里插入图片描述

我们和上一关一样在php后打截断%00,但是我们上一个是写在get头中,这个是写在载荷里面所以我们要进行编码转码,我们敲好%00然后

在这里插入图片描述

编码之后发送

就可以用蚁剑进行连接了

pass-13

这一关是用图片+php代码,组成一个图片码进行上传,当然要想解析出来这个图片,还得有这个包含漏洞。我们看到,他已经说了,网站存在包含漏洞
我们可以cmd进行生成一个图片码,命令语句:copy 14.jpg /b + 14.php /a webshell.jpg 如图所示,我们在上传这个生成后的图片
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因为上传图片马之后会被重命名图片所以下面的payload的图片名字可以在上传之后复制图片链接就可以了

构造的URL为include.php?file=upload/9720230725025046.jpg

然后用蚁剑连接

在这里插入图片描述
第二种方法制作一个图片码,可以直接用burp抓包在图片后面加一个php代码
刚刚我们通过把图片13和shell文件结合形成了新的rabb13t的图片码
这次我们直接用图片13上传并且抓包,在图片后加入一句话代码
在这里插入图片描述

在这里插入图片描述

和之前一样的payload,换成我们这次的图片
在这里插入图片描述
也可以成功

pass-14

(因为我这个靶场是用docker搭建的,存在着一些问题,于是我重新换了一个docker源重新搭建了一个靶场,这个版本的第15关就是原版的第14关)
我们来看这个 getimagesize函数,这个函数的意思是:会对目标文件的16进制去进行一个读取,去读取头几个字符串是不是符合图片的要求的

所以这关还是用和14关一样的方法,生成带有php代码的图片上传,配合包含漏洞拿下此关。
我们直接用上一关所生成的图片码,和上一关操作一样

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

在这里插入图片描述

我们再试一下上一关的第二种方法
请添加图片描述
请添加图片描述
请添加图片描述
也能成功

pass-15

第十五关和之前两关的操作一样上传包含代码的图片就好了

请添加图片描述
请添加图片描述

第二种方法也能用

pass-16

这一关对上传图片进行了判断了后缀名、content-type,以及利用imagecreatefromgif判断是否为gif图片,最后再做了一次二次渲染,但是后端二次渲染需要找到渲染后的图片里面没有发生变化的Hex地方,添加一句话,通过文件包含漏洞执行一句话,使用蚁剑进行连接

二次渲染:后端重写文件内容
basename(path[,suffix]) ,没指定suffix则返回后缀名,有则不返回指定的后缀名
strrchr(string,char)函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。
imagecreatefromgif():创建一块画布,并从 GIF 文件或 URL 地址载入一副图像
imagecreatefromjpeg():创建一块画布,并从 JPEG 文件或 URL 地址载入一副图像
imagecreatefrompng():创建一块画布,并从 PNG 文件或 URL 地址载入一副图像

这里我不知道怎么去找不同的地方,但是我们可以多试图片中的几个位置来避开修改的位置
这里和前几关的第二种方法一样,我们尝试直接在图片最后加上一句话代码
这里好像只有gif能传,其他的传不上去
这里我们下载一个gif上传
请添加图片描述

请添加图片描述
在这里我尝试用蚁剑去连,但是显示为空,于是我去访问这个图片
请添加图片描述
打开源码查看一下啊,因为我们是加在最后一行了,但是现在这个代码没了,所以最后这部分应该是被二次渲染所修改了
我们再试一下把一句话木马加在第一段后
请添加图片描述
请添加图片描述

传上去之后我们打开图片看一下,发现一句话木马被写上去了,于是我们尝试用蚁剑进行连接
请添加图片描述
成功

pass-17

第17关我们需要看源码

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

看到上面 第二个if和第三个if 的位置,先是将上传的文件移动到了新的位置之后再判断文件的是不是图片如果不是再删除移动的图片,逻辑上是不是有点不严谨了,说明这里就存在可以让我们绕过的地方,如果疯狂的上传和访问图片,就可能造成文件正在被访问不能删除,文件就可以暂时的保留了

所以我们首先随便上传一个webshell用burp进行抓包

pass-18

pass-19

pass-20

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

upload-labs靶场全通关 的相关文章

随机推荐

  • Ruff:物联网+区块链的无限可能不靠炒作

    5月初 Ruff 与施耐德电气正式签订物联网合作协议 两家企业将在未来携手共筑工业物联网 共同推进工业物联网目标的快速实现 6月6日 Ruff 受邀出席 GBLS全球无眠区块链领袖峰会 并在大会上发表关于 区块链的供应链金融 主题演讲 与此
  • JavaScript常用的Hook脚本

    headers hook 当header中包含Authorization时 则插入断点 var code function var org window XMLHttpRequest prototype setRequestHeader w
  • 蓝桥杯-零基础python刷题之路-字符串冒泡排序(包含各个知识点详细记录)

    题中提到冒泡排序 先搞定一下冒泡排序 在找出题目中所需字符串 a 冒泡排序 如字符串 qiao 如果是冒泡排序 需要如下操作 1 iqao 2 iaqo 3 iaoq 4 aioq 冒泡排序走一遍数组 每次将两个字符进行比较 将大的放在后面
  • 2021-09-22

    AR1Int g0 0 0Ip address 192 168 1 1 24Int g0 0 1Ip address 20 20 30 97 30AR2Int g0 0 0Ip address 20 20 30 98 30Int g0 0
  • ThinkPHP5.0完全开发手册——调试模式

    调试模式 ThinkPHP有专门为开发过程而设置的调试模式 开启调试模式后 会牺牲一定的执行效率 但带来的方便和除错功能非常值得 我们强烈建议ThinkPHP开发人员在开发阶段始终开启调试模式 直到正式部署后关闭调试模式 方便及时发现隐患问
  • react框架学习总结(纯干货)

    首先 我先给出我学习react框架的参考教程 以下内容都是我依据此教程的个人总结 react教程 React与JSX function Square props return
  • C语言实现简单加密算法 凯撒密码 RSA算法 简介及实现

    凯撒密码的原理以及实现过程 1 算法介绍 凯撒密码的核心思想就是移位 将明文的每一个字符 在 密码系统所支持字符序列中向右平移N 映射得到新的字符从而实现加密 而解密则相反向左平移N 加密的Key即为N 2 实验测试 加密 解密 3 源代码
  • php代码审计【11】动态函数执行和匿名函数执行

    1 动态函数执行 函数与函数之间的调用 可能会造成的漏洞 缺陷代码 2 匿名函数 Anonymous functions 也叫闭包函数 closures 允许临时创建一个没有指定名称的函数 最经常用作回调函数 ca
  • libtool的作用及应用

    gcc library makefile archive command object 注意 本文为转载 原文也是转载 但是为了尊重他人得劳动成果 我将将转载网址贴出来 libtool常见于autoconf automake 单独用的例子很
  • xss绕过,payload全集

    XSS总结 xss分为三种 反射型xss DOM型XSS及存储型XSS 不同类型的XSS的危害不同 有兴趣的可以观看一下csdn上明智讲的关于XSS攻击及原理 https edu csdn net course detail 8585里面的
  • OMG,学它!java培训讲师面试技巧

    基础 JAVA基础 JAVA集合 JAVA多线程并发 网络 数据结构与算法 框架 Spring SpringMVC MyBatis 设计模式 分布式 负载均衡 Zookeeper Redis MQ kafka 微服务 Netty与RPC S
  • Linux常用的四种压缩命令

    文章目录 一 tar命令 二 gzip命令 三 rar命令 四 zip命令 总结 一 tar命令 语法 tar option file 常用参数 c或 create 建立新的备份文件 f lt 备份文件 gt 或 file lt 备份文件
  • Substance与PBR工作流总结

    关于PBR PBR即基于物理的渲染 是一套尝试基于真实世界光照物理模型的渲染技术合集 使用了一种更符合物理学规律的方式来模拟光线 达到更真实的渲染效果 而且可以直接通过物理参数来直观地达到想要的结果 不用通过拙劣的各种参数调整 物理参数一般
  • uni-app crypto-js DES 加解密 ,支持app , h5,小程序

    crypto js DES 加解密 支持app h5 小程序 第一步 npm install crypto js 可以直接下载示例运行 看控制台打印 下载地址 https ext dcloud net cn plugin id 13351
  • Git GitHub入门2:新建Git repository并提交修改

    选择一个文件夹 执行 git init 命令 we initialize an empty git repository in the current directory 要想使用ls 查看列表 需要换成Windows powershell
  • 利用WMI打造完美三无后门(scrcons.exe)

    Welcome 各位ScriptKid 欢迎来到脚本世界 今天忙了一天 比较累 不废话那么多了 切入正题 这个 三无 后门的核心就是WMI中的永久事件消费者ActiveScriptEventConsumer 以下简称ASEC WMI中有许多
  • 微电网日前优化调度 。算例有代码(3)

    个人电气博文传送门 学好电气全靠它 个人电气博文目录 持续更新中 在前文我对问题1 2进行了解答 本文对问题3 进行解答 由于本人非研究调度的 问题3求解阐述自己对比赛论文问题3的见解 问题3 最优日前调度方案二 若考虑蓄电池作用 且微网与
  • camera HSYNC:VSYNC

    HSYNC 行锁存 换行信号VSYNC 祯锁存 换页信号 320 240的屏 每一行需要输入320个脉冲来依次移位 锁存进一行的数据 然后来个HSYNC 脉冲换一行 这样依次输入240行之后换行同时来个VSYNC脉冲把行计数器清零 又重新从
  • MySql基础汇总-DDL DML DQL DCL,存储过程,事务,触发器,函数等

    use testdb 一 数据库操作语言 DDL 数据库定义语言 create drop alter DML 数据库管理语言 insert update delete DQL 数据库查询t usert student 语言 select D
  • upload-labs靶场全通关

    upload labs靶场全通关 pass 1 pass 2 pass 3 pass 4 pass 5 pass 6 pass 7 pass 8 pass 9 pass 10 pass 11 pass 12 pass 13 pass 14