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文件如下:

而采用短文件名可绕过限制

 

posted on 2016-09-16 01:42  镱鍚  阅读(422)  评论(0)    收藏  举报

导航