Upload-labs

Upload-labs

wOmXS1.png

1、前端验证后缀名

直接bp修改后缀,蚁剑连接。

2、经过源码审计,后端只检查MIME类型

上传个xm.php,bp改MIME为image/jpeg

3、服务器端黑名单,仅过滤了::$DATA、.asp、.php、.jsp、.aspx

php3、phtml等均可绕过限制。

4、服务端丰富的黑名单,但是名字未随机生成,且黑名单中无.htaccess,可上传配置文件攻击。

1
AddType application/x-httpd-php .jpg

5、服务端丰富的黑名单,但是没有过滤大小写的绕过

xm.PHP可上传

6、服务器没有使用trim()对文件名进行左右两边的去空处理

xm.php空格 可上传

7、经过代码审计,发现没有对文件末尾的.处理,在Windows下,创建文件会默认清除.,这样绕过检测,成功注入木马。

xm.php.

8、::$DATA绕过

9、点+空格+点

1
xm.php. .

这个有点技术含量,源代码先清理末尾的点,然后截取最后一个点之后的字符串,判断是否在黑名单中,如果没有则将去了末尾点的原文件名保存到upload文件夹中。

10、双写绕过

1
xm.pphphp

11、%00截断——白名单

这里测试了一下,其实00截断的主要是,当POST方法上传文件时,filename名中加入了0x00,则存储到$_FILE的name变量中会读取字符串直到这个0x00。另外在一些函数里也会被00截断。

这道题主要是在URL参数中暴露了存储路径的位置,可以在存储目录上面加一个xm.php%00来组成一个payload,这样在组合存储路径时就会被这个00截断,而保存为xm.php

12、0x00截断——白名单

同理上一题,上一题文件路径暴露在GET参数中,此题文件保存路径暴露在POST中,截断即可。

13、上传图片马,源码采用case语句,判断文件头的二进制值是否正确,属于人工case判断。

14、getimagesize函数检测图片类型

15、

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器