解释:
文件包含漏洞:指用以下函数调用需要的的文件,在此过程中可以被黑客利用,更改被调用的函数,导致系统信息泄露。主要分为本地包含和远程包含。
require():只要程序一运行就包含文件,找不到被包含的文件时会产生致命错误,并停止脚本
require_once():功能与requir()相同区别在于当重复调用一个文件时,程序只调用一次
include():执行到include()函数时才包含文件,找不到被包含文件时只会产生警告,脚本将继续执行
include_once():功能和includ()相同,区别当重复调用一个文件时,程序只调用一次
nighcight_file(),show_source()函数对文件进行语法高亮显示,通常能看到源代码
readfile(),file_get_contents()函数读取一个文件,并写入输出缓冲
fopen(),打开一个文件或者url
Low:
1.测试调用/etc/host,出现报错,得到绝对路径
2.利用…/…/可以遍历文件目录,查看敏感信息
3.可以通过文件上传木马,通过相对路径或者绝对路径访问执行木马
创建木马:
通过dvwa的文件上传漏洞上传
文件包含访问执行得到版本信息
4.远程建立web服务,包含上去
通过kali上apache2建立web服务
开启服务
查看运行状态和版本
Web服务建立成功,通过IP地址+文件名访问
5.远程文件包含漏洞包含的是其它服务器上的php文件。需要满足两个条件在php.ini中。当php.ini中的配置选项allow_url_fopen:on allow_url_include:on,对方开启这两个配置时才可以使用。需修改以下2个配置文件
(1)此配置文件dvwa默认开启
(2)cd /etc/php/apache2/8.2/php.ini
进入这个文件修改,这两个参数在比较后面,要翻一会
(3)执行(因为环境问题,换了8.2.2版本的php搭的dvwa,所以不是原来的5.2.4版本)
Medium
中级主要是对url进行过滤,我们可以通过双写,大小写等方式绕过。要注意的是str_replace只会对字符替换一次。
所用方法与low等级一样,
High
使用 fnmatch() 函数来检查变量 page 值的开头必须是 file或者file是include.php文件,否则就不执行。
在前面添加file://
成功