文件包含
定义
- 在通过PHP函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外恩德文件,导致意外的文件泄露甚至恶意代码的注入。
- 严格来说文件包含算是代码注入的一种
危险函数
- include()
- include_once()
- require()
- require_once()
ctf中文件包含
- 本地文件包含
-直接读取目标机上的Flag文件
-通过PHP伪协议读取代码中的flag
-写入PHP木马获取webshell,查看flag - 远程文件包含
-指定第三方服务器上运行的PHP木马,拿到webshell,查看Flag文件
下面时没有对传入文件进行检测的一段代码
<?php
$file=$_GET['file']
if (file_exists('/home/www'.$file.''.php')) {
include '/home/www/'.$file.'.php';
}
else {include '/home/www'.'home.php';
} >?
PHP伪协议
- file:// 访问本地文件系统
- php:// 访问各个输入/输出流
php://input
php