原文为pkav之当php邂逅windows通用上传缺陷。
在文件上传时,我们往往会考虑到文件名截断来绕过黑名单限制,如%00 等。除此之外还有使用冒号(":")去截断,如:bypass.php:jpg。但是问题在于这种方式生成的文件是空白的,里面的不含有任何内容。
那么该如何利用这个生成的空白文件呢?
php+window+iis环境下:
双引号(">") <==> 点号(".")';
大于符号(">") <==> 问号("?")';
小于符号("<") <==> 星号("*")';
从上面"<" 就等于 "*",而"*"代表任意字符,于是乎,我们可以这样修改上传的文件名,如下:
filename="bypass.<<<"从而覆盖掉bypass.php这个原本为空的文件。
类似的性质还有::$DATA这种常用的文件上传黑名单绕过方法。