第十二关(get%00截断)
打开第十二关,查看源代码发现进行了白名单过滤,只允许上传jpg、png、gif的图片格式,
move_uploaded_file
本函数检查并确保由 file 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 newloc 指定的文件。
该函数遇到%00会被截断,从而可以实现对php文件的上
那么我们就先上传一个php文件,配合burpsuite抓包,上传之后如图下所示
我们的目的主要是想上传一个php文件,然后对php文件进行绕过(若上传一个png的图片,那就直接获得webshell了
可以看到,该php文件不允许上传,但是我们可以从save_path(保存的文件路径)中得到提示,我们需要在upload/添加webshell11.php%00,将filename的后缀进行修改,改成webshell11.png,如下图
我们先在浏览器上看看能否访问成功,如果成功再使用蚁剑进行连接后台,糟糕,发现不能访问成功,发现上述又出现了警告的提示,暂时还未找到原因,找到的时候再告诉大家巴。
第十三关(post%00截断)
进入第十三关,查看源代码发现跟12关相比,只是提交方式发生了改变,继续上传一个php文件,使用burpsuite抓包得到如下图
还是跟第1关一样的做法,只是位置发生了改变,继续在save_path上加入webshell12.php%00,在filename上修改后缀为png,将content-type修改成image/png,如下图
这里要注意一下,post使用%00是需要经过url解码之后的,原因是post不会自动解码,而get方式会自动解码
但是发现还是上传失败,思路,方法就在这里啦
重新下载了一个新的upload-load,里面配合着文件包含的漏洞进行
第十四关(图片马+文件包含漏洞)
进入第十四关,发现提示,说需要上传一个图片马
使用notepadd在一张图片编辑木马格式(此图片可以先找一张正常的图片,因为正常的图片文件头会显示,这样就能避开文件头的影响)
上传之后复制图片地址路径,进入浏览器访问,访问时我们可以用文件包含漏洞继续访问,该文件存在include.php文件,里面存在file参数,我们进行传参可以得到下图
使用蚁剑进行连接,这样就表示上传成功啦!
第十五关(图片马getimagesize()+文件包含)
进入第十五关,发现提示使用getimagesize()检查是否为图片文件,我们依旧使用图片马的格式进行上传,上传之后,先访问浏览器看是否访问成功,若成功,就可以使用蚁剑进行连接
发现上图,访问成功,使用蚁剑进行连接
第十六关(exif_imagetype()函数绕过)
进入第十六关,查看源代码,发现了一个函数exif_imagetype()
exif_imagetype() 读取一个图像的第一个字节并检查其签名。
发现需要开启php_exif模块,打开phpstudy--->点击其他选项菜单--->打开配置文件--->php.ini--->擦查找exif文件,将前面的;去掉保存即可
上传一个图片马,利用文件包含漏洞得到访问地址,再利用蚁剑进行连接,
不知道为什么我上传的图片的时候页面显示黑色了,操作都跟前两题差不多
第十七关(二次渲染绕过)
进入第十七关,查看源代码,发现此关对上传图片进行了文件后缀的判断以及文件类型判断
(($fileext == "jpg") && ($filetype=="image/jpeg"))
还有imagecreatfromjpeg函数对图片的判断
$im = imagecreatefromjpeg($target_path)
对于二次渲染:二次渲染指的是网站接受用户上传的文件后会再进行对文件的二次操作
二次渲染最好用的是gif格式的图片,方便绕过
那我们就先上传一个gif格式的图片 ,再利用文件包含漏洞配合获取webshell权限
127.0.0.1/upload-labs/include.php?file=upload/xxx.gif
这里我上传的时候跟第十六关一样,也是上传的时候黑屏了,我就不演示给大家看了,重要的还是思路
第十八关(条件竞争)
进入第十八关,查看提示说要代码审计,查看源代码,解释一下
首先创建$ext_arr数组,用于存储允许的文件扩展名(jpg、png、gif)
使用move_uploaded_file()函数将文件从临时目录移动到目标目录。
如果文件成功移动,则检查文件扩展名是否在允许的数组中。如果是,则使用随机数和当前日期时间重命名文件,并将
标签:文件,upload,labs,解题,file,php,上传,图片 From: https://blog.csdn.net/2302_78903258/article/details/139365048