DVWA学习笔记--03--File Inclusion
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DVWA学习笔记--03--File Inclusion相关的知识,希望对你有一定的参考价值。
第三个是文件包含漏洞 分为远程文件包含和本地文件包含两种 但是远程文件包含是需要开启allow_url_include()这个函数才行 在low下的全部源码 想怎么包含怎么包含 如果包含的参数错了 则会报错 那么服务器的路径就给爆出来了(开了错误显示)
远程包含--
本地包含-- 就没写别的文件 直接利用dvwa带的文件
如果不知道绝对路径 仅有相对路径也可以这样包含 在medium下的全部源码 可见medium下 增加了一个replace函数 将"http://", "https://","../", "..\\"" 都进行了一次过滤 这种replace一次过滤还是很简单的 双写绕过就好了 远程包含--
本地包含-- 有绝对路径的 没有绝对路径的 在high下的全部源码 加了一个fnmatch()函数 一个匹配的函数 意思就是在参数不为include.php的时候 参数必须以file开头 因为题目给了三个本地文件嘛 file1.php file2.php file3.php file-本地传输协议 主要用于访问本地计算机中的文件 file:///path 这个可以直接访问文件(file://也行) 所以把这个用上就能正好绕过这个防护
至于远程文件上传我没有找到什么好姿势 以后再看看其他的协议 在impossible下的全部源码 可见impossible下直接对传入的参数进行了一个名单匹配 关于 ‘!= ‘的绕过只想到md5加密后的0e可以绕过 没想到其他的绕过方法 而且就算绕过了也没法访问我们想要的路径 所以没办法了(姿势不够) 0x00
0x01
low
<?php
// The page we wish to display
$file = $_GET[ ‘page‘ ];
?>
0x02
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 );
?>
0x03
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;
}
?>
0x03
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;
}
?>