文件包含漏洞的原理

版权声明:孤 https://blog.csdn.net/Wu000999/article/details/84370162

文件包含

开发人员将相同的函数写入单独的文件中,需要使用某个函数时直接调用此文件,无需再次编写,这种文件调用的过程称文件包含。

文件包含漏洞

开发人员为了使代码更灵活,会将被包含的文件设置为变量,用来进行动态调用,从而导致客户端可以恶意调用一个恶意文件,造成文件包含漏洞。

几乎所有脚本语言都会提供文件包含的功能,但文件包含漏洞在PHP Web Application中居多。

文件包含分类

1.本地文件包含
包含服务器本身存在的恶意文件
a.txt
在这里插入图片描述

include.php

<?php
$b=$_GET['id'];
include($b);
?>

在这里插入图片描述

注:
两个文件在同一目录下(若不在同一目录这被包含的文件路径必须写绝对路径或相对路径)
被包含的页面的后缀无论是什么都会当做PHP解析

2.远程文件包含

包含其他网站上的恶意文件
远程包含的文件路径必须是绝对路径
远程文件包含利用条件:

在php.ini中allow_url_fopen=on、allow_url_include=on

localhost/b.php?id=http://ip/文件路径

PHP文件包含函数

include()

使用此函数,只有代码执行到此函数时才将文件包含进来,发生错误时只警告并继续执行。

inclue_once()

功能和前者一样,区别在于当重复调用同一文件时,程序只调用一次。

require()

使用此函数,只要程序执行,立即调用此函数包含文件,发生错误时,会输出错误信息并立即终止程序。

require_once()
功能和前者一样,区别在于当重复调用同一文件时,程序只调用一次。

猜你喜欢

转载自blog.csdn.net/Wu000999/article/details/84370162