文件包含之利用Windows特性包含未知文件

善良是很珍贵的,但善良没有长出牙齿来,那就是软弱


最近在火线看的文章

发现这个思路14年左右就已经用在dedecms找后台上了,只不过我现在才知道,写个博客记录一下

此特性只能在Windows环境下使用,因为 Windows 在搜索文件时使用到了 FindFirstFile 这一个 Winapi 函数

利用场景

知道文件所在目录,但不知道文件名的情况下来包含我们的马

假如某处存在文件包含漏洞,我们需要上传一个我们自己的文件来包含,但如果上传的文件经过了重命名,且没有返回文件名,就可以使用此技巧包含

利用方法

我们可以将文件名未知部分的字符串使用 <> 代替,但是需要注意:一个 <> 只能代表一个字符

如果我们上传的马子为 shell.php,那么请求 s< 或者 s> 都是访问不到文件的。需要使用 s<< 才能访问到,含义为继续往下搜索

演示

文件包含漏洞:index.php

Assassins小白

webshell文件:shell.php

Assassins小白

我们使用上述姿势包含 shell.php 文件

Assassins小白

测试发现,在使用 << 去匹配时,会优先匹配值最小的文件名称

如下文件名:

Assassins小白

我们直接匹配 2<<会匹配到最小的 202033333333333333333333.php 文件

Assassins小白

如果需要匹配2022文件,需要增加文件的准确度,也就是 2022<<

Assassins小白

完结

此特性并不是只有文件包含函数才可用,事实上还有很多函数也一样可利用这个特性,我们在进行代码审计的时候也可以注意一下,说不定就能挖出意想不到的漏洞

Assassins小白