目录
本地文件包含简介
文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。
- php中引发文件包含漏洞的通常是以下四个函数:
-
include()
如果在包含的过程中有错,比如文件不存在等,则会直接退出,不执行后续语句。 -
include_once()
如果出错的话,只会提出警告,会继续执行后续语句。 - require()
- require_once()
其中require_once()
和include_once()
功能与require() 和 include() 类似。但如果一个文件已经被包含过了,则 require_once() 和 include_once() 则不会再包含它,以避免函数重定义或变量重赋值等问题。
当利用这四个函数来包含文件时,不管文件是什么类型,都会直接作为php文件进行解析。
测试代码:
<?php
$file = $_GET['file'];
include $file;
?>
在同目录下有个phpinfo.txt,其内容为<?php phpinfo(); ?>
则只需要访问:
即可成功解析phpinfo
LFI本地文件包含01
题目URL:
www。whalwl。site:8014
提示:flag在网站跟目录下!
找到上传:/upload.php
传一个图片马就好了。
LFI本地文件包含02
题目URL:
www。whalwl。site:8028
提示:flag在服务器根目录。
后台账号密码: admin admin
首先经过特征比对,发现程序是凡诺企业网站管理系统 3.0
经过查阅资料发现存在包含漏洞
- 漏洞文件:
其中channel.php存在包含文件,include里有$dir
$t_mpath
$c_mcmodel
$t_path
四个变量
if (ism()) {
include($dir.$t_mpath.$c_mcmodel);
} else {
include($dir.$t_path.$c_cmodel);
}
?>
- 跟踪变量发现
$c_mcmodel
变量可控且没有任何过滤。
/admin/cms_channel_add.php
- 添加频道,上传图片马,频道模型填入图片马地址,地址前面加
../../
跳转到包含文件目录。
- 最后在‘管理频道’里面打开到你添加的‘频道’链接: