文件包含漏洞

什么是文件包含漏洞

服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发者节省大量的时间。这意味着您可以创建供所有网页引用的标准页眉或菜单文件。当页眉需要更新时,您只更新一个包含文件就可以了,或者当您向网站添加一张新页面时,仅仅需要修改一下菜单文件(而不是更新所有网页中的链接)

说白了意思就是
比如A文件中要计算1+1等于几
A文件不会
于是A文件向B文件请教
B文件告诉他1+1=2
另外C文件也不会,也向B文件请教
B文件也告诉他
这样以来
每次A或者C文件不会1+1时就向B文件请教
但是A文件和C文件比较懒
不愿意每次遇到1+1自己动脑子想
而是伸手党直接向B文件请教
这样来的方便

接下来解释这个漏洞形成原理
文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。


    $filename  = $_GET['filename'];
    include($filename);
$_GET['filename']参数开发者没有经过严格的过滤
直接带入了include的函数,攻击者可以修改$_GET['filename']的值,执行非预期的操作。
?>
其实更直白一些
文件包含和SQL注入等攻击方式一样,文件包含漏洞也是一种“注入型漏洞”
其本质就是输入一段用户能够控制的脚本或者代码,并让服务器端执行

例子

include.php文件
通过get方式获取变量test的值
在这里插入图片描述
phpinfo.php文件
文件包含漏洞_第1张图片
执行文件包含漏洞
文件包含漏洞_第2张图片
无论我们如何修改phpinfo.php文件的扩展名
最终都会显示出结果的
即就是include()函数并不在意被包含的文件是什么类型,只要有php代码,都会被解析出来

你可能感兴趣的:(Find,Hole)