我们先来看一个简单的文件包含php文件
<?php
$filename = $_GET['file'];
include($filename);
?>
我们可以通过get传参得到任何想要的文件,文件包含主要关注三个点
- allow_url_include
- allow_url_fopen
- 允许包含的文件的白名单
值得注意的是从PHP5.2开始allow_url_include就默认为Off了,而allow_url_fopen一直是On。这意味着通过get传参远程文件包含基本上不可行了(除非将allow_url_include就默认为ON,估计只有在ctf比赛中才看得到,还有对waf很有信心的情况下)。
本地文件包含
所以我们本地包含的文件可以是什么呢,任何在允许包含的文件的白名单的文件,还有一点值得注意的是被包含的文件会被自动解析成PHP文件,所以有文件上传漏洞的时候这是可以配合包含恶意文件的搞事情。
比如我在本地写一个txt文件
<?php phpinfor();?>

伪协议
那么php伪协议还能用吗?
allow_url_include为Off:
php://input和data://是不行了的,其他的还可以用
文件包含漏洞的理解上很简单,关键在于文件包含场景的应用。接着学习,先写到这里
