当前位置: 首页 > news >正文

【Web应用安全】SQLmap实战DVWA SQL注入(从环境搭建到爆库,完整步骤+命令解读)

新手必看!SQLmap实战DVWA SQL注入(从环境搭建到爆库,完整步骤+命令解读)

刚学网络安全时,我对着“SQL注入”一脸懵——知道它能偷数据库数据,却不知道从哪下手,SQLmap命令记了又忘,靶机和Kali连不通更是常事。后来才发现,SQL注入实战根本不用死磕复杂原理,用SQLmap自动化工具,跟着步骤点一点、输命令,就能从靶机里扒出用户名密码。今天就把这份“零门槛”的SQL注入实验思路拆透,以DVWA靶机为例,从环境准备到爆库成功,每一步都带截图和命令解读,新手跟着做就能上手!

SQL 注入是什么?

SQL 注入是 Web 安全领域最常见、危害极大的漏洞之一,简单说就是:黑客把恶意的 SQL 语句伪装成正常用户输入,骗网站服务器执行,进而偷取、篡改甚至删除数据库数据,严重时还能控制整个服务器。
用生活化的比喻理解:网站的数据库就像一个带锁的文件柜,SQL 语句是 “开锁 + 取文件” 的指令,用户输入本应是 “要取的文件名”(比如 “用户 1 的信息”)。但如果网站没做输入过滤,黑客就可以输入 “取文件 A;把所有文件都给我”(恶意 SQL),网站会把这句话完整当作指令执行,直接泄露所有数据 —— 这就是 SQL 注入的核心逻辑。

SQL 注入有什么危害?

偷取敏感数据:获取数据库里的用户名、密码(比如之前实验中用 SQLmap 扒出的 dvwa 用户表)、手机号、银行卡号等;
篡改数据:修改订单金额(比如把 100 元改成 1 元)、篡改用户权限(把普通账号改成管理员);
删除数据:执行DELETE FROM users删除整个用户表,导致网站瘫痪;
控制服务器:通过高权限数据库账号,执行系统命令(比如查看服务器文件、上传木马),完全接管网站服务器。

一、先搞懂:实验要做啥?核心逻辑是啥?

1. 实验目标

在Kali Linux里用SQLmap工具,对DVWA靶机的SQL注入漏洞发起攻击,最终获取数据库中的用户名和密码(比如dvwa库的users表)。

2. 核心逻辑(大白话版)

DVWA靶机的“SQL Injection”模块有漏洞,提交数据时会把用户输入直接拼进SQL语句执行。我们用SQLmap工具,带着登录凭证(Cookie)去访问这个漏洞页面,让工具自动探测漏洞、枚举数据库、提取数据,全程不用手动写复杂SQL语句。

3. 实验准备(缺一不可!)

  • 两台虚拟机:
  • ①Kali Linux(自带SQLmap);
  • ②OWASP靶机(含DVWA环境,提前开启Apache和MySQL服务);
  • 网络要求:Kali和靶机在同一网段(比如都设为NAT模式,确保能互相ping通);
  • 前期准备:登录DVWA,把安全等级设为“Low”(新手先从低安全等级入手)。
    在这里插入图片描述
    在这里插入图片描述

二、核心工具解读:SQLmap到底能干啥?

不用记复杂原理,记住SQLmap的“核心功能”就行:

  • 自动化探测:判断目标URL有没有SQL注入漏洞,支持GET/POST等提交方式;
  • 数据库枚举:列出所有数据库、表、列(比如查dvwa库有哪些表,users表有哪些字段);
  • 数据提取:把表中的数据扒出来(比如users表的用户名和密码,还能自动解密MD5);
  • 支持多种注入方式:布尔盲注、时间盲注、报错注入等,不用手动选,工具自动适配。

SQLMap采用了以下5种独特的SQL注入技术

  • 基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入。
  • 基于时间的盲注,即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否己执行(即页面返回时间是否增加)来判断。
  • 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中。
  • 联合查询注入,在可以使用Union 的情况下的注入。. 堆查询注入,可以同时执行多条语句时的注入。-
  • 堆查询注入,可以同时执行多条语句的执行时的注入。

一句话总结:SQLmap是SQL注入的“全自动挖掘机”,只要告诉它目标地址和登录信息,它就能自己挖数据。

三、详细步骤:从登录到爆库,一步不差!

步骤1:开启环境,获取漏洞URL

  1. 启动靶机的Apache和MySQL服务(比如在靶机终端输service apache2 startservice mysql start);
  2. 打开Kali的浏览器,访问DVWA地址(比如192.168.75.100/dvwa),登录账号密码(默认admin/admin);
  3. 左侧菜单选“SQL Injection”(SQL注入模块),随意输一个数字(比如1),点“Submit”提交;
  4. 复制浏览器地址栏的URL(比如http://192.168.75.100/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#),这就是漏洞URL(GET提交方式,参数id是注入点)。
    在这里插入图片描述

步骤2:获取登录Cookie(关键!不然SQLmap会被拦截)

SQLmap需要带着登录凭证才能访问DVWA的漏洞页面,Cookie就是凭证:

  1. 在当前浏览器页面按F12打开开发者工具;
  2. 选“Storage”(存储)→“Cookies”,找到“PHPSESSID”和“security”的值(比如PHPSESSID=ni3gsltihh60r1q50tiu4518p3security=low);
  3. 把两个值拼起来,格式是security=low;PHPSESSID=xxx,复制备用。
    在这里插入图片描述

步骤3:用SQLmap探测漏洞,确认数据库类型

  1. 打开Kali的终端,输入命令(替换成你的URL和Cookie):
    sqlmap -u "http://192.168.75.100/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low;PHPSESSID=ni3gsltihh60r1q50tiu4518p3" --batch
    
  2. 命令解读:
    • -u:指定漏洞URL;
    • --cookie:带上登录Cookie,避免被DVWA拦截;
    • --batch:自动选择默认选项,不用手动按Y/N;
  3. 运行后,SQLmap会自动探测,最后提示“back-end DBMS is MySQL”(后端数据库是MySQL),说明探测成功。
    在这里插入图片描述

步骤4:枚举所有数据库

想知道靶机有哪些数据库,输入命令(复用URL和Cookie):

sqlmap -u "漏洞URL" --cookie="你的Cookie" --batch --dbs
  • --dbs:列出所有数据库;
  • 运行结果会显示5个数据库(dvwa、information_schema、mysql等),我们重点关注dvwa(DVWA的专用数据库)。

步骤5:枚举dvwa库的所有表

知道了数据库,下一步看里面有哪些表,命令:

sqlmap -u "漏洞URL" --cookie="你的Cookie" --batch -D dvwa --tables
  • -D dvwa:指定要查询的数据库是dvwa;
  • --tables:列出该数据库的所有表;
  • 结果会显示2个表:guestbook(留言板)和users(用户表),我们要扒的是users表。
    在这里插入图片描述

步骤6:枚举users表的所有列

知道了表,再看里面有哪些字段(比如用户名、密码),命令:

sqlmap -u "漏洞URL" --cookie="你的Cookie" --batch -D dvwa -T users --columns
  • -T users:指定要查询的表是users;
  • --columns:列出该表的所有列;
  • 结果会显示8个列,重点关注user(用户名)和password(密码,MD5加密)。
    在这里插入图片描述

步骤7:提取user和password列的数据(最终目标)

最后一步,把用户名和密码扒出来,命令:

sqlmap -u "漏洞URL" --cookie="你的Cookie" --batch -D dvwa -T users -C "user,password" --dump
  • -C "user,password":指定要提取的列是user和password;
  • --dump:下载(提取)这些列的数据;
  • 运行后,SQLmap会自动提取数据,还会把MD5加密的密码解密(比如admin的密码5f4dcc3b5aa765d61d8327deb882cf99会解密成password),最终显示用户名和明文密码,爆库成功!

在这里插入图片描述

四、新手必避3个坑(我踩过的错,你别犯!)

  1. Kali和靶机连不通:确保两者在同一网段(比如都设为NAT模式),用ping 靶机IP测试,不通就检查防火墙(关闭靶机的ufw防火墙:ufw disable);
  2. Cookie输错或过期:Cookie里的PHPSESSID会过期,要是SQLmap提示“302跳转”,就重新登录DVWA,再获取一次Cookie;
  3. DVWA安全等级不是Low:高安全等级会拦截SQL注入,一定要在DVWA的“DVWA Security”里设为“Low”。

五、总结:SQL注入的核心逻辑与防护思路

  1. 核心逻辑:网站没有过滤用户输入,导致恶意SQL语句被执行,进而泄露数据库数据;
  2. 防护建议
    • 输入过滤:对用户输入的特殊字符(比如'orand)进行转义;
    • 预编译SQL:用参数化查询,不直接拼接用户输入和SQL语句;
    • 最小权限:数据库账号只给必要权限(比如查询权限,不给删除、修改权限);
    • 定期审计:用工具扫描网站漏洞,及时修复。
http://www.dtcms.com/a/553022.html

相关文章:

  • 从零打造 Telegram 中文生态:界面汉化 + 中文Bot + @letstgbot 搜索引擎整合实战
  • QT 给Qimage数据赋值,显示异常,像素对齐的坑
  • wordpress 整站下载万江做网站
  • 谈谈设计和建设网站体会摄影网站建设的功能有哪些
  • ESP 8684模组上的IO6引脚相关问题处理办法
  • 李宏毅机器学习笔记37
  • 大模型-Qwen-Agent框架:系列Agent功能介绍 (1)
  • 18. React的受控和非受控组件
  • cocos 在animation播放后调整widget右对齐能避免动画position影响对齐
  • RAG_混合检索
  • Pytorch 预训练网络加载与迁移学习基本介绍
  • 企业官网响应式网站作品网站
  • Ubuntu20.04操作系统搭建gitlab详细教程
  • MySQL:with窗口函数说明及使用案例
  • 【C++学习】对象特性--继承
  • 常州外贸网站浦东区建设工程监督网站
  • AI+产业革命:人工智能如何成为新质生产力的“第一加速器”
  • Linux应用开发-6-GPIO系统控制蜂鸣器
  • LeetCode 刷题【140. 单词拆分 II】
  • 网站开发 犯法网站漏洞扫描工具
  • 漏洞修复学习之CVE-2023-38545漏洞复现与修复
  • 逻辑回归特征重要性排序实验报告:不同特征选择方法的排序一致性验证
  • 深入解析MySQL(6)——存储过程、游标与触发器
  • Linux操作系统学习之---线程池
  • 做网站 免费字体wordpress的slider
  • “十五五”规划前瞻:短剧小程序系统开发的技术浪潮与开发新机遇
  • Rust开发之使用 Trait 定义通用行为——实现形状面积计算系统
  • 解决小程序滚动穿透问题
  • 《风格锚点+动态适配:Unity跨设备渲染的核心逻辑》
  • Unity与iOS原生交互开发入门篇 - 调用iOS的Alert