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

    简介

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

    文件包含函数

    PHP中文件包含函数有以下四种:

    require()

    require_once()

    include()

    include_once()

    includerequire区别主要是,include在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行;而require函数出现错误的时候,会直接报错并退出程序的执行。

    include_once()require_once()这两个函数,与前两个的不同之处在于这两个函数只包含一次,适用于在脚本执行期间同一个文件有可能被包括超过一次的情况下,你想确保它只被包括一次以避免函数重定义,变量重新赋值等问题。

    漏洞产生原因

    文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。

    <?php
        $filename  = $_GET['filename'];
        include($filename);
    ?>
    
    <?php
    include($_GET['f']);	
    ?>
    

    例:$_GET['filename']参数开发者没有经过严格的过滤,直接带入了include的函数,攻击者可以修改$_GET['filename']的值,执行非预期的操作。

    源自:https://www.freebuf.com/articles/web/182280.html

    文件包含分为两类

    本地文件包含LFI ( Local File Inclusion ) 当被包含的文件在服务器本地时,就形成本地文件包含

    远程文件包含RFI ( Remote File Inclusion)当被包含的文件在第三方服务器时,叫做远程文件包含

    实验

    低安全级别

    中安全级别

  • 相关阅读:
    23)PHP,数组操作函数
    22)PHP,数组排序函数
    21)PHP,杨辉三角
    数据库三大范式
    SQL Server 中关于EXCEPT和INTERSECT的用法
    面试准备
    面试总结
    jQuery函数attr()和prop()的区别
    SVN checkout出某个特定版本
    SVN 中的忽略文件
  • 原文地址:https://www.cnblogs.com/ananing/p/13423291.html
Copyright © 2011-2022 走看看