文件上传之upload-labs通过笔记 13-19关

Upload通关笔记:

这篇只是本人在练习文件上传时编写的,每一关的绕过方法有很多种,只例举了一种,大家参考:

只是测试,所以小马文件里只写了一个<?php phpinfo(); ?>语句,并不是一句话小马。

1-12关的笔记在这里

13关之后需要用到文件包含配合

Pass13-----图片马

Step1:上传一个图片测试,抓白修改后缀为.php上传成功,但是打开一看还是.jpg文件,后缀怎么又变回去;
上传一个php文件失败,抓包修改增加文件幻术,发现可以上传成功但是后缀直接改成了和文件头部一致的gif。

3.png

Step2:后缀既然无法绕过,那么上传一个图片马,配合文件包含漏洞使用
上传成功后打开文件,获取新的文件名。

1-2.png

简单新建一个包含文件漏洞的页面upload.php,将该文件放在根目录下:

<?php
    $filename  = $_GET['filename'];
    include($filename);
?>

测试使用:包含成功

http://127.0.0.1/upload.php?filename=./upload/文件名

1-3.png

Pass14-----图片马--getimagesize()

Step1:上传一个小马文件测试,上传失败;

Step2:上传一个图片马文件,配合包含

这里用getiA1Qmagesize获取文件类型,还是直接就可以利用图片马就可进行绕过,
getimagesize()函数将测定任何GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM或WBMP图像文件的大小并返回图像的尺寸以及文件类型和一个可以用于普通HTML文件中标记中的 height/width 文本字符串。

和上一关一样,传一个图片马然后包含即可。

Pass15--图片马--exif

代码: $image_type = exif_imagetype($filename);

用到php_exif模块来判断文件类型,还是直接就可以利用图片马就可进行绕过。

Pass16--图片马--重新渲染图片

嗯….16,17,18都不会做,大家可以参考这篇笔记upload-labs写的很详细。

Pass17--图片马—

还是直接就可以利用图片马就可进行绕过。

分析,该代码先将文件上传到服务器,
然后用rename重命名,
再用unlink删除文件,
可以通过条件竞争的方式在unlink之前,访问webshell。
首先在burp中不断发送上传webshell的数据包
然后不断在浏览器中访问,可以通过竞争访问到文件。

Pass18--图片马

还是直接就可以利用图片马就可进行绕过。

分析,本关对文件后缀名做了白名单判断,
然后一步一步检查文件大小、文件是否存在等等,
将文件上传后,对文件重新命名
同样存在条件竞争的漏洞。
上传一个图片马,
不断利用burp发送上传图片马的数据包,由于条件竞争,
程序会出现来不及rename的问题,从而上传成功

Pass19----00截断

2-1.png

上传一个图片马,抓包:

发现本关是move_uploaded_file() 00截断,上传webshell,同时自定义保存名称,直接保存为php是不行的
发现move_uploaded_file()函数中的img_path是由post参数save_name控制的,因此可以在save_name利用00截断绕过:
将yvette改成yvette.php(空格),在hex中将对应20改成00,上传;
然后打开后将后面的00截断去掉即可。

2-2.png

2-3.png

2-4.png

2-5.png

把路径改成/upload/yvette.php再打开

2-6.png

结束了!

标签: none

添加新评论