zoukankan      html  css  js  c++  java
  • 文件包含漏洞详解

    一、什么是文件包含漏洞

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

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

      在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才可以。

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

      

      

  • 相关阅读:
    多点触摸时代来了,第一个是什么呢
    能看出点幻影刺客的风采
    XNA 贴图载入的新状况
    WAR3的模型,幻影刺客,我来了。
    幻影刺客跑起来啦
    TM2T入手
    哥们儿,你终于来了….哈哈,等的花儿都谢了。
    鸣谢 MAGOSX.com
    彩色版幻影刺客留念
    好吧,效果先到这里吧
  • 原文地址:https://www.cnblogs.com/zllovellyo/p/12733481.html
Copyright © 2011-2022 走看看