[网络安全]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攻击姿势及解题详析合集,读者可借此入门文件包含攻击。

我是秋说,我们下次见。


目录
相关文章
|
9月前
|
算法 安全 网络安全
【多智能体系统】遭受DoS攻击的网络物理多智能体系统的弹性模型预测控制MPC研究(Simulink仿真实现)
【多智能体系统】遭受DoS攻击的网络物理多智能体系统的弹性模型预测控制MPC研究(Simulink仿真实现)
333 0
|
安全 数据安全/隐私保护
谨防二维码陷阱:揭秘网络钓鱼攻击与保护措施
当我们深入了解二维码的世界时,了解它们的特性和潜在风险变得至关重要,揭示了伴随其广泛普及的更为阴暗的一面
715 1
|
边缘计算 网络协议 安全
DDoS攻击:网络世界的“洪峰考验”与应对逻辑
本文介绍了DDoS攻击的运行机制及其影响,并提供了多层次的防御策略。DDoS攻击通过海量流量使目标服务器过载,造成服务中断,对电商和在线平台带来巨大经济损失与用户信任危机。防御措施包括基础设施优化、流量调度及云端协同防护等技术手段。针对中小企业,推荐使用如非凡云提供的弹性防护方案,含200G免费DDoS防御与自动带宽扩容功能,有效降低攻击风险和技术门槛。
984 0
DDoS攻击:网络世界的“洪峰考验”与应对逻辑
|
存储 安全 网络安全
如何识别和防范网络钓鱼攻击?
通过以上方法的综合运用,可以有效识别和防范网络钓鱼攻击,降低遭受网络安全威胁的风险,保护个人信息和财产安全。
1249 68
|
安全 数据安全/隐私保护 网络虚拟化
如何防止网络钓鱼攻击
网络钓鱼是攻击者伪装成合法来源,通过电子邮件等手段窃取敏感信息的行为。常见特征包括通用问候语、陌生域名、制造紧迫感和包含可疑附件。为防止此类攻击,建议进行安全培训、不分享个人信息、谨慎点击链接、使用双因素认证,并保持软件更新。ADSelfService Plus提供无密码身份验证和自适应多因素认证(MFA),有效保护组织免受网络钓鱼威胁。
450 6
|
安全 网络安全 数据安全/隐私保护
社会工程学攻击:了解并预防心理操控的网络欺诈
社会工程学攻击:了解并预防心理操控的网络欺诈
986 7
|
存储 安全 网络安全
互联网上如何有效应对网络勒索攻击?
有效应对网络勒索攻击需要采取多方面的措施,从预防、监测到应急响应和数据恢复等多个环节进行综合防护。
316 4
|
网络协议 安全 物联网
网络安全涨知识:基础网络攻防之DDoS攻击
网络安全涨知识:基础网络攻防之DDoS攻击
1134 0
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
431 17
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
336 10