DVWA简介

DVWA(Damn Vulnerable Web Application)是一个基于PHP/MySQL的脆弱性Web应用平台,专为安全专业人员设计,用于测试技能和工具。它包含十大安全模块,其中Brute Force(暴力破解)是最基础也是最常见的攻击方式之一。

DVWA 1.9版本提供四种安全级别:Low、Medium、High和Impossible,通过比较不同级别的代码差异,安全人员可以深入理解Web安全防护的演进过程。

Brute Force攻击概述

暴力破解是指攻击者通过系统化的密码尝试获取合法用户凭证的方法。这种攻击方式在2014年12306"撞库"事件中造成了广泛影响。

各安全级别分析与利用

Low级别

服务器端代码分析:

<?php
​
if( isset( $_GET[ 'Login' ] ) ) {// Get username$user = $_GET[ 'username' ];
​// Get password$pass = $_GET[ 'password' ];$pass = md5( $pass );
​// Check the database$query  = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";$result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );
​if( $result && mysqli_num_rows( $result ) == 1 ) {// Get users details$row    = mysqli_fetch_assoc( $result );$avatar = $row["avatar"];
​// Login successful$html .= "<p>Welcome to the password protected area {$user}</p>";$html .= "<img src=\"{$avatar}\" />";}else {// Login failed$html .= "<pre><br />Username and/or password incorrect.</pre>";}
​((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}
​
?>

漏洞特征:

  • 无任何防爆破机制

  • 未对输入参数进行过滤,存在SQL注入漏洞

  • 使用GET方法传输敏感数据

漏洞利用方法:

  1. Burp Suite爆破:

    • 拦截登录请求

    • 发送至Intruder模块

    • 设置密码字段为攻击点

    • 载入字典开始攻击

    • 通过响应长度差异识别正确密码

2.SQL注入绕过:

  • 用户名:admin'or'1'='1

  • 密码:任意

  • 或使用:admin'#

Medium级别

代码改进:

$user = mysqli_real_escape_string($_GET['username']);
$pass = md5(mysqli_real_escape_string($_GET['password']));

安全增强:

  • 使用mysqli_real_escape_string过滤特殊字符

  • 密码进行MD5哈希处理

  • 添加了2秒延迟响应

漏洞利用:

  • SQL注入基本被防御

  • 仍可使用Burp Suite爆破,方法与Low级别类似

  • 因仅有2秒固定延迟,爆破依然可行

High级别

安全增强:

checkToken($_REQUEST['user_token'], $_SESSION['session_token'], 'index.php');
// ...
sleep(rand(0,3));

防护机制:

  • 引入Anti-CSRF token

  • 随机延迟(0-3秒)

  • 双重输入过滤(stripslashes+mysql_real_escape_string)

漏洞利用挑战:

  • 传统爆破工具失效

  • 需要处理动态token

Impossible级别

终极防护措施:

$total_failed_login = 3;
$lockout_time = 15;
$account_locked = false;
​
// 检查失败登录次数
if(($data->rowCount() == 1) && ($row['failed_login'] >= $total_failed_login)){$timeout = strtotime("{$last_login}+{$lockout_time} minutes");if(time() <= $timeout) $account_locked = true;
}
​
// 使用PDO预处理语句
$data = $db->prepare('SELECT * FROM users WHERE user=:user AND password=:password LIMIT 1;');
$data->bindParam(':user', $user, PDO::PARAM_STR);

安全机制:

  1. 账户锁定策略(3次失败尝试后锁定15分钟)

  2. PDO预处理语句彻底防御SQL注入

  3. 完善的登录失败处理流程

  4. 随机延迟响应

防护建议

  1. 实施账户锁定机制

  2. 使用CAPTCHA验证码

  3. 强制使用强密码策略

  4. 采用多因素认证

  5. 使用预处理语句防御SQL注入

  6. 记录并监控登录尝试

  7. 设置合理的延迟响应

总结

DVWA的Brute Force模块展示了从完全无防护到企业级防护的完整演进路径。安全人员通过分析各级别代码差异,可以深入理解Web认证安全的核心要点。在实际环境中,建议至少采用High级别的防护措施,对于关键系统应实现Impossible级别的全方位保护。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/88381.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/88381.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/88381.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Android】Activity 的生命周期和启动模式

文章目录 Activity 的生命周期和启动模式1. 任务和返回栈2. Activity 的四种状态2.1 运行状态2.2 暂停状态2.3 停止状态2.4 销毁状态 3. Activity的生命周期3.1 生命周期回调方法3.2 演示 Activity 的生命周期 4. Activity的启动模式4.1 standard&#xff08;标准模式&#xff…

八大架构宪法 - 技术使用指导说明文档

我们定义了八部宏伟的“架构宪法”,这份 《八大架构宪法技术使用指导说明文档》,将作为交付给人类架构师和高级AI代理的 “战术手册”。 核心目标是:将每一部宪法的抽象哲学,转化为在项目不同阶段中、具体的、可操作的技术决策指南。回答一个关键问题:“在选择了某一部宪…

创建顶部导航

导航组件,在layout文件夹下面新建 ResponsiveNavbar.vue <template><nav class"navbar" :class"{ navbar--mobile: isMobile }"><div class"navbar-container"><!-- Logo --><div class"navbar-logo">…

AI对话导出工具 (AI Chat Exporter)——支持 ChatGPT, Grok 和 Gemini 平台

&#x1f680; AI对话导出工具 (AI Chat Exporter) 轻松将AI对话导出为标准Markdown格式 支持 ChatGPT, Grok 和 Gemini 平台 相关代码已开源至 Github 欢迎Star ✨ 功能特点 &#x1f504; 多平台支持&#xff1a;同时支持 ChatGPT, Grok 和 Gemini 三大AI平台&#x1f4dd;…

【MATLAB代码】基于MVC的EKF和经典EKF对三维非线性状态的滤波,提供滤波值对比、误差对比,应对跳变的观测噪声进行优化

本文所述的代码实现了改进的扩展卡尔曼滤波算法&#xff08;MVC-EKF&#xff09;&#xff0c;针对三维运动估计场景&#xff0c;与经典EKF算法进行性能对比。代码通过引入Versoria函数优化协方差更新过程&#xff0c;显著提升了在测量异常值干扰下的状态估计鲁棒性。 文章目录 …

【Linux】Linux系统的基础操作

目录 常用命令速递 系统目录结构及路径 Linux 常用命令 做两个小项目 据此操作 用户配额 前言 当下&#xff0c;Linux 系统作为开源操作系统&#xff0c;意义和作用重大。技术上&#xff0c;其开源特性极大推动软件开发进步&#xff0c;全球开发者可共同完善&#xff0c…

使用 C++/OpenCV 构建中文 OCR 系统:实现账单、发票及 PDF 读取

使用 C/OpenCV 构建中文 OCR 系统&#xff1a;实现账单、发票及 PDF 读取 在当今数字化浪潮中&#xff0c;自动从文档中提取信息至关重要&#xff0c;尤其是在处理大量账单、发票和 PDF 文件时。光学字符识别&#xff08;OCR&#xff09;技术是实现这一目标的核心。本文将详细…

windows配置Jenkins自动化定时任务+测试报告发送

一、Jenkins的安装步骤 JDK安装 没有JDK的先安装JDKhttps://adoptium.net/zh-CN/temurin/releases/?osany&archany&version21 下载Jenkins 由于JDK 1.8仅适配Jenkins 2.357之前的版本&#xff08;如2.346.1及以下&#xff09;&#xff0c;需从旧版本渠道下载&#xf…

预训练语言模型基础知识概述

文章目录 预处理语言模型的发展预训练语言模型统计语言模型神经网络语言模型 词向量onehot编码词嵌入word embedding Word2Vec模型RNN和LSTMRNNLSTM ELMo模型预训练下游任务 Attention自注意力Masked Self AttentionMulti-head Self Attention 位置编码Transformer概念GPT概念B…

浏览器工作原理24 [#]分层和合成机制:为什么css动画比JavaScript高效

引用 《浏览器工作原理与实践》 本文主要讲解渲染引擎的分层和合成机制&#xff0c;因为分层和合成机制代表了浏览器最为先进的合成技术&#xff0c;Chrome 团队为了做到这一点&#xff0c;做了大量的优化工作。了解其工作原理&#xff0c;有助于拓宽你的视野&#xff0c;而且也…

【数字后端】-什么是RC corner? 每种Corner下有什么区别?

芯片的寄生参数可以在多个corner下提取&#xff0c;他们对应了不同情况的net delay Typical&#xff1a;R和C都是标准值Cmax(Cworst)&#xff1a;C最大的互连角&#xff0c;R小于TypicalCmin(Cbest)&#xff1a;C最小&#xff0c;R大于TypicalRCmax(RCworst)&#xff1a;互连线…

HarmonyOS开发基础 --鸿蒙仓颉语言基础语法入门

仓颉编程语言是华为自主研发的一种面向全场景应用开发的现代编程语言&#xff0c;具有高效编程、安全可靠、轻松并发和卓越性能等特点。本节将简单介绍仓颉语言的部分语法和使用&#xff0c;帮助开发者快速上手。 1.3.1&#xff1a;数据类型 整数 仓颉把整数分为有符号和无符…

Excel文件比较器v1.3,html和js写的

Excel文件比较器v1.3 版本说明&#xff1a;v1.3 1添加支持文件格式&#xff1a;CSV。 2&#xff0c;添加60条历史记录保存功能 - 用于保存比对结果。历史记录保存在浏览器的localStorage中&#xff0c;这是一个浏览器提供的本地存储机制&#xff0c;数据会一直保留直到用户…

Kimi“新PPT助手” ,Kimi全新自研的免费AI生成PPT助手

大家好&#xff0c;这里是K姐。 一个帮你用AI轻松生成精美PPT的女子。 前段时间给大家分享了一期用智能体做PPT的对比测评&#xff0c;很多友友都表示&#xff1a;那 Kimi 呢&#xff1f; 今天偶然发现 Kimi 新增了一个叫“新PPT助手”的功能&#xff0c;立马上手体验了一下…

MySQL DATETIME类型存储空间详解:从8字节到5字节的演变

在MySQL数据库设计中&#xff0c;DATETIME类型用于存储日期和时间信息&#xff0c;但其存储空间大小并非固定不变&#xff0c;而是随MySQL版本迭代和精度定义动态变化。本文将详细说明其存储规则&#xff0c;并提供清晰的对比表格。 一、核心结论 MySQL 5.6.4 是分水岭&#…

Gartner发布中国企业应用生成式AI指南:避免12 个 GenAI 陷阱

GenAI 技术&#xff08;例如 AI 代理和 DeepSeek&#xff09;的快速迭代导致企业抱有不切实际的期望。本研究借鉴了我们与中国 AI 领导者就常见的 GenAI 陷阱进行的讨论&#xff0c;并提供了最终有助于成功采用的建议。 主要发现 接受调查的首席信息官表示&#xff0c;生成式人…

Vue3中ref和reactive的区别与使用场景详解

在 Vue 3 中&#xff0c;响应式系统进行了全新设计&#xff0c;ref 和 reactive 是其中的核心概念。 ### 一、ref 的使用 ref 适用于基本数据类型&#xff0c;也可以用于对象&#xff0c;但返回的是一个带 .value 的包装对象。 js import { ref } from vue const count ref(…

React性能优化:父组件如何导致子组件重新渲染及避免策略

目录 React性能优化&#xff1a;父组件如何导致子组件重新渲染及避免策略什么是重新渲染&#xff1f;父组件如何"无辜"地让子组件重新渲染&#xff1f;示例 1: 基础父组件状态变更示例 2: 传递未变化的原始类型Prop示例 3: 传递引用类型Prop&#xff08;对象&#xf…

图的拓扑排序管理 Go 服务启动时的组件初始化顺序

在构建复杂的 Go 应用程序时&#xff0c;服务的启动过程往往涉及多个组件的初始化&#xff0c;例如日志、配置、数据库连接、缓存、服务管理器、适配器等等。这些组件之间通常存在着复杂的依赖关系&#xff1a;日志可能需要配置信息&#xff0c;数据库连接可能依赖日志和追踪&a…

【物理重建】SPLART:基于3D高斯泼溅的铰链估计与部件级重建

标题&#xff1a;《SPLART: Articulation Estimation and Part-Level Reconstruction with 3D Gaussian Splatting》 项目&#xff1a;https://github.com/ripl/splart 文章目录 摘要一、引言二、相关工作2.1 数据驱动的铰链学习2.2 物体重建的表征方法2.3 铰链物体重建 三、方…