转载来自:新手指南:DVWA-1.9全级别教程之File Inclusion
http://www.freebuf.com/articles/web/119150.html

(1)File Inclusion,意思是文件包含(漏洞),是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(include(),require()和include_once(),require_once())利用url去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。文件包含漏洞分为本地文件包含漏洞与远程文件包含漏洞,远程文件包含漏洞是因为开启了php配置中的allow_url_fopen选项(选项开启之后,服务器允许包含一个远程的文件)。
文件包含漏洞练习_第1张图片

(2)点击每一个选项,就会打印出相应内容,注意观察URL中的变化

文件包含漏洞练习_第2张图片

简单点说就是file1.php被做为参数了,那么我们是不是可以加入其他参数,比如说其他文件
(3)我们试着读取配置文件密码账户文件/etc/shadow

文件包含漏洞练习

我们发现不可行,同时我们根据返回的结果,我们可以判定的是这个系统为window系统。

(4)注意到返回的值暴露了window的路径,我们可以猜测到php.ini文件路径。
构造如下:
http://127.0.0.1/vulnerabilities/fi/?page=C:\phpStudy\WWW\php.ini

文件包含漏洞练习

我们再使用相对路径,使用../返回,注意多写几个。这个可以保证返回到根目录

构造如下:
http://127.0.0.1/vulnerabilities/fi/?page=..\..\..\..\..\..\phpStudy\WWW\php.ini

文件包含漏洞练习

(5)同时我们看到,配置文件中的Magic_quote_gpc选项为off。在php版本小于5.3.4的服务器中,当Magic_quote_gpc选项为off时,我们可以在文件名中使用%00进行截断,也就是说文件名中%00后的内容不会被识别,即下面两个url是完全等效的。

http://127.0.0.1/vulnerabilities/fi/page=..\..\..\..\..\..\phpStudy\WWW\php.ini%0033.php
http://127.0.0.1/vulnerabilities/fi/?page=..\..\..\..\..\..\phpStudy\WWW\php.ini

文件包含漏洞练习

可惜的是由于本次实验环境的php版本为5.4.31,所以无法进行验证。

(6)当服务器的php配置中,选项allow_url_fopen与allow_url_include为开启状态时,服务器会允许包含远程服务器上的文件,如果对文件来源没有检查的话,就容易导致任意远程代码执行。

在本地上传一个php2.txt

文件包含漏洞练习_第3张图片
没错,应该是执行了。。。。为什么没显示。。

    (6)当做了http替换或../为0置换时,可以用hthttptp  以及 ..././

    (7)使用file协议

    file:///C:/phpStudy/WWW/dvwa/php2.txt

文件包含漏洞练习_第4张图片

文件包含漏洞练习_第5张图片