01、题目分析
程序开发人员通常会把可重复使用的函数写到单个文件中,在使用某些函数时,
直接调用此文件,而无须再次编写,这种调用文件的过程一般被称为文件包含。
在包含文件的过程中,如果文件能进行控制,则存储文件包含漏洞
02、文件包含
这一题,emmm,没啥好说的,直接告诉答案了,在服务器的本机就有一个test.txt文件,内容就是phpinfo(),在02.php这个文件中,有include()函数,直接就将访问值传递的参数当作php文件进行执行,但是这里根据代码分析,有一个将文件名加上.html后缀的功能,正常使用文件包含行不通
因此我们尝试%00截断
http://www.bdrwmy.cn:8001/fi/01.php?filename=test.txt%00
03、源码分析
<?php
if(isset($_GET['filename'])){ // 检查是否设置了 'filename' 参数
$filename = $_GET['filename']; // 获取 'filename' 参数的值,并赋给 $filename 变量
include($filename . ".html"); // 包含指定的文件内容,文件名为参数值拼接上 ".html" 后缀
}else{
exit(); // 如果未设置 'filename' 参数,则退出脚本执行
}
?>
标签:02,文件,00,01,包含,php
From: https://www.cnblogs.com/bdrwmy/p/17643697.html