文件包含漏洞简介
解释:LFI是能够打开并包含本地文件的漏洞;
这里区别一下RFI,远程文件包含漏洞;
意义:文件包含漏洞是"代码注入"的一种,包含即执行,可干的坏事可想而知,看i春秋总结的危害有如下几种:
- PHP包含漏洞结合上传漏洞;
- PHP包含读文件;
- PHP包含写文件;
- PHP包含日志文件;
- PHP截断包含;
- PHP内置伪协议利用。
- PHP中文件包含函数有以下四种:
php漏洞函数:
- require()
- require_once()
- include()
- include_once()
include和require区别主要是,include在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行;而require函数出现错误的时候,会直接报错并退出程序的执行。
而include_once(),require_once()这两个函数,与前两个的不同之处在于这两个函数只包含一次,适用于在脚本执行期间同一个文件有可能被包括超过一次的情况下,你想确保它只被包括一次以避免函数重定义,变量重新赋值等问题。
最简单的漏洞代码:<?php include($_GET[file]);?>
当使用这4个函数包含一个新的文件时,该文件将作为PHP代码执行,PHP的内核并不会在意被包含的文件是什么类型。即你可以上传一个含shell的txt或jpg文件,包含它会被当作PHP代码执行(图马)。