首页 > 其他 > 详细

文件包含漏洞详解

时间:2020-04-19 21:53:36      阅读:63      评论:0      收藏:0      [点我收藏+]

一、什么是文件包含漏洞

  在了解这个漏洞之前我们先要理解什么是文件包含,文件包含的初衷是为了减少程序代码的冗余。

  试想一下,我在每一个代码文件中都要用到同一段代码,如果我把这段都要用到的代码转换成一个文件,让每一个用到它的代码都将其包含在里边,不就可以减少很多代码量,减少很多工作量了吗?

  在php中,包含一个文件有四种函数:

    include()、include_once()、require()、require_once()

  include()和include_once()的区别在于,include_once()只会引用同样的文件一次,为了避免函数和变量的重新定义,require和require_once()同理。

  include()函数包含的文件如果不存在,程序会发出警告,但是会继续运行。

  require()函数包含的文件如果不存在,程序会抛出异常,停止运行。

  在用这四个函数来包含文件的时候,不论文件类型为什么,其中的内容都会被当作php代码来解析  

  根据包含文件位置的不同,文件包含漏洞可以分为两类。远程文件包含(RFI)和本地文件包含(LFI)。

二、本地文件包含(LFI)  

   技术分享图片

   在https://www.zllovell.com/phpstudy/ 服务器目录下有一个zl.txt文件,内容如上图,当前目录还有一个test.php文件内容如下

  技术分享图片

 

  这时候我们访问https://www.zllovell.com/phpstudy/test.php?file=zl.txt,结果如下

  技术分享图片

  这就是本地文件包含漏洞,可以读取服务器本地的文件。

三、远程文件包含(RFI)

  RFI的利用条件较为苛刻,需要php.ini配置文件中allow_url_fopen与allow_url_include都为on才可以。

  但是远程文件包含意味着包含的文件内容是我们完全可控的,不是来自服务器端的文件,所以一旦服务器存在远程文件包含漏洞会造成的危害极大。

  

  

文件包含漏洞详解

原文:https://www.cnblogs.com/zllovellyo/p/12733481.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!