可见是白名单过滤
继续审计源码, 可以看到GET存在一个参数, 体现在url中; 然后将该参数的路径值(要上传到制定目录的位置)和上传的文件名后缀做拼接, 得到一个全新的上传文件:
在GET参数save_path中传入真正的webshell名, 然后在后面加一个截断符%00
然后在POST的filename为正常白名单的文件名
那么可以采用截断绕过
%00截断适用条件
PHP 版本 < 5.3.4
php.ini 中 magic_quotes_gpc=off
通过服务端的白名单过滤和拼接之后, save_path内容后面的值就被截断了, 达到了绕过的效果:
上传1.jpg木马文件,不用burp改包,save_path改成upload/1.php%00,就可以上传
:8016/upload/1.php访问木马
Pass-12 (%00截断(二)):
这个东西和第一题很像,无非就是变成了POST方式提交save_path,问题在于POST方式我们用%00却失效了,这是因为POST传参并不会URL解码,所以需要我们该Hex改为00
Pass-13-16(图片马绕过)(getimagesize图片类型绕过)(php_exif模块图片类型绕过)(二次渲染绕过):
这几题目实际上不能利用,只是要你上传一个图片马,必须配合文件包含使用
找到一个.gif文件,在二进制的第4行插入一句话木马,可以解决以上问题
Pass-17(条件竞争):
前面都是先检测,后上传,这里是先上传后检测。在还没有删除前,访问这个文件,让这个文件执行生成另一个文件。另一个文件作为木马。我们用burp模块抓包然后去爆破就行,一个不断上传,一个不断访问
Pass-18(条件竞争2)(这题有Bug):
实际上还是条件竞争,只不过做了各种检查,其实还是一样的,只不过这次要上传图片马。
Pass-19(00截断):
move_uploaded_file() ,这是移动文件的函数,上传上去然后移动到这边重命名
上传1.php文件,用burp改包
7-3文件上传解析漏洞(三) 一、IIS6.0解析漏洞IIS6.0解析漏洞(一)
IIS6.0除了将ASP后缀当做ASP进行解析的同时,当文件后缀名字为.asa .cer .cdx 也会当做asp去解析,这是因为IIS6.0在应用程序扩展中默认设置了.asa .cer .cdx 都会调用 asp.dll,
可以通过以下设置网站什么后缀用什么解析。
IIS6.0解析漏洞(二)