文件名截断漏洞原理分析
By HelloWeb 2017-3-7
如下的PHP程序中(例子1),存在文件名被操控的漏洞,其代码如下:<?php
$name=$_GET['name'];
$filename=$name.'.php';
include $filename;
?>
例子1:文件名被操控的PHP程序
例子1的基本程序逻辑就是通过用户输入的文件名还包含对应文件后缀为PHP的文件,如果在文件当前目录下包含一个PHP文件为a.php,代码如下:
<?php
print("OK! The right file.<br>");
?>
同时,在该目录下还包含一个文件名为secret.txt文件,其中包含的信息如下:This is a secret file.
根据例子1的程序逻辑,如果输入URL:http://127.0.0.1/test/t1.php?name=a,则输出结果为:OK!The right file.
对于攻击者而言,当前想通过该漏洞来读取secret.txt中的信息,但是该文件不是PHP程序,要想达到目标,就要利用文件名字截断漏洞了。
第一种方式:%00
%00表示字符串结尾