Windows短文件名
在Windows的短文件名的命名规则中,有以下几点:
1)Windows 将文件名截断为 6 个字符,并在后边附加一个波形符 ~和一个数字,如果含多个重复文件名,将以递增序列增加,如~1、~2等等
2)如果重复文件名的个数超过了十个及以上,就减少前面一位字符,~后面用一个二位数字表示,更多的以此类推
3)同时注意的是生成短文件名Windows 将文件扩展名截断为 3 个字符或更短
4)短文件名Windows 将文件名及扩展名中的所有字符转为大写
5)如果后缀长度大于三的,也会生成短文件名,前面字符长度少的,由随机字符填充。
如下:
这所带来的安全问题就在于我们可以绕过有些对文件名的检查,从而达到攻击目的。
举例如下:
<?php $file = $_GET['file']; if(stripos($file,'secret_flag') !== FALSE){ echo "ERROR!!"; } else{ echo file_get_contents($file); } ?>
直接读取secret_flag.txt文件如下:
而采用短文件名可绕过限制
浙公网安备 33010602011771号