文件上传

0x00:文件上传漏洞原理

0x01:pass-01

源码:
截图
根据提示客户端使用js对不合法图片进行检查,而源码只对文件后缀进行了校验,可通过抓包来改文件后缀名。
截图
将此处改为.php即可绕过。
截图

0x02:pass-02

源码:
截图
这题对数据包MIME进行检查,只过滤了文件类型,没有过滤文件后缀名。可以通过抓包修改Content-Type进行绕过。
截图
截图

0x03:pass-05

源码:
截图
这题过滤了大部分文件名,但没有对文件名后缀进行统一大小写。可以使用大小写绕过黑名单。即上传一个.phP文件即可。
截图

0X04:pass-06

源码:
截图
本题未对尾部空格进行过滤,抓包在文件末尾添加空格即可绕过。
截图
截图

0x05:pass-07

源码:
截图
这题题目没有去除文件后缀的点,由于windows文件后缀名只有点时会被去除,可以抓包加点绕过。
截图
在上传的文件夹下可以看到,文件名为.php后面的点被去除了。
截图
截图

0x06:pass-08

源码:
截图
本题没有去除字符串::$DATA,抓包添加::$DATA即可绕过,即上传test8.php::$DATA之后会变成test8.php。
截图
上传后在upload文件夹下为
截图
截图

0x07:pass-09

源码:
截图
本题虽然对大小写、点等都进行了过滤,缺不够严谨只过滤了一次,因此可以构造文件名为
Test9.php. .
截图
截图

0x08:pass-10

源码:
截图
这题中$file_name = str_ireplace($deny_ext,"", $file_name);过滤了后缀名,可以通过构造后缀名为.pphphp来绕过。
截图
由于配置的环境问题,剩余的pass无法实现,这里对剩下的个人对文件上传的利用进行一些总结。
%00截断:
这类的文件上传通常可以通过构造文件名:文件名.php%00.jpg的方法绕过白名单的方式上传文件。
00截断:
截断的核心,就是chr(0)这个字符,这个字符不为空(Null),也不是空字符(“”),更不是空格! 当程序在输出含有chr(0)变量时,chr(0)后面的数据会被停止,换句话说,就是误把它当成结束符,后面的数据直接忽略,这就导致漏洞产生 。
使用抓包工具进行改包
截图
然后将+的hex值2b改为00
截图
截图
之后释放包即可