首页 > 代码库 > DVWA学习笔记--03--File Inclusion

DVWA学习笔记--03--File Inclusion

0x00

三个是文件包含漏洞

分为远程文件包含和本地文件包含两种

但是远程文件包含是需要开启allow_url_include()这个函数才行

 

 

0x01

low

在low下的全部源码

<?php

// The page we wish to display
$file = $_GET[ page ];

?>

想怎么包含怎么包含

如果包含的参数错了 则会报错 那么服务器的路径就给爆出来了(开了错误显示)

技术分享

远程包含--

技术分享

本地包含--

就没写别的文件  直接利用dvwa带的文件

技术分享

如果不知道绝对路径 仅有相对路径也可以这样包含

 技术分享

 

 

0x02

medium

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

 可见medium下 增加了一个replace函数 将"http://", "https://","../", "..\""  都进行了一次过滤

 这种replace一次过滤还是很简单的 双写绕过就好了

远程包含--

技术分享

本地包含--

技术分享有绝对路径的

 

 

 

 

技术分享没有绝对路径的

 

 

 

0x03

high

在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;
}
?>

 

加了一个fnmatch()函数

一个匹配的函数 

意思就是在参数不为include.php的时候 参数必须以file开头

因为题目给了三个本地文件嘛 file1.php file2.php file3.php

 

file-本地传输协议 主要用于访问本地计算机中的文件

file:///path 这个可以直接访问文件(file://也行)

所以把这个用上就能正好绕过这个防护

技术分享

 

 至于远程文件上传我没有找到什么好姿势

以后再看看其他的协议

 

 

0x03

impossible

在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;
}

?>

可见impossible下直接对传入的参数进行了一个名单匹配

关于 ‘!= ‘的绕过只想到md5加密后的0e可以绕过

没想到其他的绕过方法

而且就算绕过了也没法访问我们想要的路径

所以没办法了(姿势不够)

 

DVWA学习笔记--03--File Inclusion