UPLOAD1-21闯关
环境:windows php5.2.17 apache2.4.23
01:
分析:前端过滤,只允许上传jpg\png\gif文件
上传:准备一张图片,编辑器打开,在末尾多写入几句<?php phpinfo();?>,然后上传,抓包,将文件修改为.php文件,上传成功后访问即可
02:
分析:代码对文件的content-type进行了验证,并且按原文件名上传到服务器
上传:准备一张图片,编辑器打开,在末尾多写入几句<?php phpinfo();?>,然后上传,抓包,将数据包中的文件content-type值修改为image/jpeg、image/png或image/gif,上传成功后访问即可
03:
分析:限制了不能上传的文件名后缀,并且将去除点号、空格、::$DATA、并转化为小写的文件后缀进行验证,上传到服务器的文件名为 随机数+过滤后的文件后缀 ,故考虑使用特殊后缀:php3、php4、php5、phtml等作为上传文件后缀
上传:准备一张图片,编辑器打开,在末尾多写入几句<?php phpinfo();?>,然后上传,抓包,将文件修改为.php3文件,上传成功后访问即可
注释:
这些后缀能否正确执行,取决于网站搭建平台(apache等)的配置文件(httpd.conf
)
默认情况下,我们需要更改apache中的httpd.conf配置文件,将需要解析的后缀名添加上,保存并重启apache服务
04:
分析:限制了不能上传的文件名后缀,并且对去除点号、空格、::$DATA、并转化为小写的文件后缀进行了验证,上传到服务器的文件名为 去除末尾点号的上传文件名 ,由于是apache,故考虑利用**.htaccess**文件特性进行绕过
上传:先上传内容为<FilesMatch “test”>SetHandler application/x-httpd-php的.htaccess文件
再准备一张图片,编辑器打开,在末尾多写入几句<?php phpinfo();?>,然后上传,抓包,将数据包中的文件名修改为含有test的文件名进行上传,上传成功后访问即可
注释:
首先apache要开启module_rewrite模块(否则不会成功):
打开httpd.conf
找到mod_rewrite.os行,删除前面注释符
找到AllowOverride None改为AllowOverride All
保存,重启apache即可
05:
分析:限制了不能上传的文件名后缀,并且对去除点号、空格、::$DATA、并转化为小写的文件后缀做了验证,上传到服务器的文件名为 去除末尾点号的上传文件名 ,考虑apache的解析漏洞,再遇见无法解析的文件类型时会从右向左一次解析,直到遇见可以解析的文件类型
上传:准备一张图片,编辑器打开,在末尾多写入几句<?php phpinfo();?>,然后上传,抓包,将文件修改为.php.xxx文件,上传成功后访问即可
要使用.user.ini的话,需要使用php5.3版本方能成功
06:
分析:限制了不能上传的文件名后缀,并且对去除点号、空格、::$DATA得到的文件后缀做了验证,上传到服务器的文件名为 随机数+过滤得到的文件后缀,由于没有对得到的后缀进行小写转化+黑名单不健全,故利用大小写绕过即可
上传:准备一张图片,编辑器打开,在末尾多写入几句<?php phpinfo();?>,然后上传,抓包,将文件修改为.pHP文件,上传成功后访问即可
07:
分析:限制了不能上传的文件名后缀,并且对去除点号、::$DATA并转化为小写得到的文件后缀做了验证,上