[网络安全]DVWA之File Inclusion攻击姿势及解题详析合集

简介: 以下姿势均以本机环境为例low level在D:\Software\PHPStudy\phpstudy_pro\WWW路径写入1.php

以下姿势均以本机环境为例

low level

在D:\Software\PHPStudy\phpstudy_pro\WWW路径写入1.php


image.png

源码

<?php

// The page we wish to display

$file = $_GET[ 'page' ];

?>

并未进行任何过滤


GET?page=http://127.0.0.1/1.php



medium level

源码

<?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() 函数是 PHP 中用于字符串替换的内置函数。它可以在字符串中查找并替换指定的内容,返回替换后的新字符串。其基本语法如下:


str_replace( $search, $replace, $subject, $count = null )


其中,search 参数指定要查找的字符串,可以是一个字符串或者一个字符串数组;

replace 参数指定要替换成的字符串,可以是一个字符串或者一个字符串数组;

subject 参数指定要进行替换操作的原始字符串,可以是一个字符串或者一个字符串数组;

count 参数(可选)指定要替换的最大次数,默认为全部替换。


例如,下面的代码将字符串中的空格字符替换为下划线字符:


$str = "hello world";

$new_str = str_replace( " ", "_", $str );

echo $new_str;  // 输出:hello_world


需要注意的是,str_replace() 函数对大小写敏感,不会改变原始字符串的大小写。

如果要对大小写进行不敏感的替换,则需要使用 str_ireplace() 函数。

此外,如果要用一个字符串数组来替换多个字符串,也可以使用 preg_replace() 函数来实现。


如果在调用 str_replace() 函数时不指定 $count 参数,则默认将所有的匹配项都进行替换,也就是像下面这样:


$new_str = str_replace($search, $replace, $subject);


在这种情况下,函数会在 $subject 字符串中查找 $search 字符串,并将全部匹配到的字符串都替换为 $replace 字符串,并返回替换后的新字符串。


在源码中,str_replace()将http://、https://、../、..\转换为


大写绕过

由于str_replace() 函数对大小写敏感

将?page=http://127.0.0.1/1.php

修改为?page=HTTP://127.0.0.1/1.php

文件包含成功:

image.png

?page=Http://127.0.0.1/1.php、?page=HttP://127.0.0.1/1.php等均可

双写绕过

原理

双写绕过是一种常见的绕过字符过滤规则的方法,其原理是将需要过滤的字符在 URL 中双倍输入,从而绕过简单的过滤器。例如,如果字符过滤器禁止输入单引号 ',则可以通过输入两个单引号 '' 来绕过过滤器。


下面是一个示例 PHP 代码,演示如何使用双写绕过字符过滤:


// Get the input parameter from the URL
$user = $_GET['user'];
// Filter out single quotes to prevent SQL injection attacks
$user = str_replace("'", "''", $user);
// Execute the SQL query
$sql = "SELECT * FROM users WHERE username = '$user'";
$result = mysql_query($sql);

在上面的代码中,使用 str_replace() 函数将用户名中的单引号替换成两个单引号,以防止 SQL 注入攻击。然而,这种简单的过滤方式容易被双写绕过,例如将输入参数设置为 admin'',即可成功绕过过滤器,执行恶意操作。


实操

将?page=http://127.0.0.1/1.php

修改为?page=httphttp://://127.0.0.1/1.php

文件包含成功:

image.png


Url编码绕过

将?page=httphttp://://127.0.0.1/1.php进行url编码以绕过前端限制,

变为?page=httphttp://:/%2F127.0.0.1/1.php,再被浏览器解码

文件包含成功:

image.png


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


代码审计

该代码从 URL 中获取名为 page 的参数,并将其赋值给变量 $file。然后使用 fnmatch() 函数对 $file 进行验证,判断它是否匹配指定的条件。如果 $file 不以 file 开头且不等于 include.php,则说明用户请求的不是目标文件,因此输出错误信息并调用 exit() 函数,结束程序执行。


姿势: file://包含的文件路径


GET?page=file://D:\Software\PHPStudy\phpstudy_pro\WWW\1.php

文件包含成功:

image.png


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


代码审计

上述代码首先从 URL 参数中获取 $file 的值,然后使用 if 语句来检查该值是否等于 include.php、file1.php、file2.php 或 file3.php 中的任意一个。

如果是,则可以包含该文件。其他情况下,都会输出错误信息并结束程序执行。


总结

以上为[网络安全]DVWA之File Inclusion攻击姿势及解题详析合集,读者可借此入门文件包含攻击。

我是秋说,我们下次见。


目录
相关文章
|
2月前
|
网络协议 安全 物联网
网络安全涨知识:基础网络攻防之DDoS攻击
网络安全涨知识:基础网络攻防之DDoS攻击
95 0
|
4月前
|
云安全 缓存 网络协议
如何防护DDoS攻击,筑牢网络安全防线
随着信息技术的飞速发展,网络已成为现代社会不可或缺的一部分,极大地便利了个人社交和商业活动。然而,网络空间在创造无限机遇的同时,也潜藏着诸多威胁,其中分布式拒绝服务攻击(DDoS,Distributed Denial of Service)以其高破坏力和难以防范的特点,成为网络安全领域的一大挑战。本文将从DDoS攻击的原理出发,详细探讨如何有效防护DDoS攻击,以筑牢网络安全防线。
|
5月前
|
SQL 监控 安全
|
6月前
|
SQL 云安全 安全
当前网络安全问题日益凸显,有哪些常见的网站攻击及对应的防御策略
随着互联网技术的飞速发展,我们的生活越来越离不开网络。然而,网络的普及也伴随着网络安全问题的日益凸显。网站攻击事件频发,不仅威胁到个人隐私,还可能导致企业经济损失和社会稳定问题。因此,了解常见的网站攻击方式及相应的防御策略,对于维护网络安全具有重要意义。
|
5月前
|
运维 监控 网络协议
|
23天前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
61 17
|
1月前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
1月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
51 10
|
1月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
61 10
|
1月前
|
存储 监控 安全
云计算与网络安全:云服务、网络安全、信息安全等技术领域的融合与挑战
本文将探讨云计算与网络安全之间的关系,以及它们在云服务、网络安全和信息安全等技术领域中的融合与挑战。我们将分析云计算的优势和风险,以及如何通过网络安全措施来保护数据和应用程序。我们还将讨论如何确保云服务的可用性和可靠性,以及如何处理网络攻击和数据泄露等问题。最后,我们将提供一些关于如何在云计算环境中实现网络安全的建议和最佳实践。

热门文章

最新文章