上传靶机实战之upload-labs解题 (4)

下面是文件包含的代码

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

分析代码可以知道它只读2字节,只需要将木马后缀改为图片格式,内容加个图片头部,然后在返回包中找到路径,然后写在file参数后,因为file参数include的原因都会直接执行。如下:

上传靶机实战之upload-labs解题


长传成功,配合文件包含漏洞解析图片格式的木马。

pass-15

先看源码:

上传靶机实战之upload-labs解题


这里使用getimagesize()函数来验证是否是图片,这里说一下getimagesize(),这个函数功能会对目标文件的16进制去进行一个读取,去读取头几个字符串是不是符合图片的要求的。getimagesize()返回结果中有文件大小和文件类型,如果用这个函数来获取类型,从而判断是否是图片的话,会存在问题。是可以被绕过的,因为图片头可以被伪造。这里伪造gif的图片头,来进行上传,如下

上传靶机实战之upload-labs解题


图片木马上传成功。

pass-16

这一关需要开启php_exif

上传靶机实战之upload-labs解题


看源码

上传靶机实战之upload-labs解题


这里使用exif_imagetype函数来检查是否是图片,这里说一下exif_imagetype(),它是读取一个图像的第一个字节并检查其签名。所以也是可以通过伪造图片头来进行绕过的。这里同样伪造gif的图片头,来进行上传,如下

上传靶机实战之upload-labs解题


上传成功

pass-17

看源码

上传靶机实战之upload-labs解题


这一关比较综合,判断了后缀名、content-type,以及利用imagecreatefromgif判断是否为gif图片,最后再做了一次二次渲染。还是按照第16关的思路走一下,看是否成功。显然失败了。

上传靶机实战之upload-labs解题


那就做一个图片木马,上传一个正常图片,抓取数据包,在图片末尾插入恶意代码,如下:

上传靶机实战之upload-labs解题


然后,进行上传操作。上传成功,如下。

上传靶机实战之upload-labs解题


因为这里进行了二次渲染,所以还没有结束,我们将上传的图片下载到本地查看。

上传靶机实战之upload-labs解题


这里发现在进行二次渲染的过程中,我们插入到图片的恶意代码被清理掉了,所以需要对比渲染前后,哪些地方没有变化,我们将恶意代码插入到那里,来绕过二次渲染。对比发现,这里渲染前后没有发生变化。

上传靶机实战之upload-labs解题


所以,我将恶意代码插入到这里,如下图:

上传靶机实战之upload-labs解题


重新上传,上传成功,再次下载到本地,发现恶意代码没有被清除,绕过了二次渲染。

上传靶机实战之upload-labs解题

pass-18

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydxgj.html