【实战靶场】基于 Docker 快速搭建 MySQL 与 MSSQL 漏洞复现环境及 DataGrip 避坑指南
--- title: 【实战靶场】基于 Docker 快速搭建 MySQL 与 MSSQL 漏洞复现环境及 DataGrip 避坑指南 tags: - 网络安全 - SQL注入 - Docker - MySQL - MSSQL categories: - Web安全 - 靶场搭建 --- # 【实战靶场】基于 Docker 快速搭建 MySQL 与 MSSQL 漏洞复现环境及 DataGrip 避坑指南 在学习 Web 安全与 SQL 注入SQLi时拥有一个快速部署、随用随删的数据库靶场环境至关重要。本文记录在 Windows 环境下使用 **Docker** 快速搭建 **MySQL 5.7** 与 **MSSQL 2019 (SQL Server)** 测试环境的全流程以及使用 **DataGrip** 连接时的常见避坑记录。 --- ## 目录 1. [一、MySQL 靶场快速搭建与持久化挂载](#1) 2. [二、MSSQL 2019 靶场搭建与验证](#2) 3. [三、DataGrip 图形化连接与配置](#3) 4. [四、高频报错与踩坑总结重点复盘](#4) --- span id1/span ## 一、MySQL 靶场快速搭建与持久化挂载 ### 1. 准备初始化数据 (init.sql) 在本地新建工作目录如 C:\sqli-lab创建 init.sql 文件并写入测试数据 sql CREATE DATABASE IF NOT EXISTS sqli_lab; USE sqli_lab; -- 创建用户表 CREATE TABLE IF NOT EXISTS users ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50), password VARCHAR(50), email VARCHAR(100), role VARCHAR(20) DEFAULT user ); -- 插入测试数据 INSERT INTO users (username, password, email, role) VALUES (admin, admin123, adminlab.com, admin), (alice, alice456, alicelab.com, user), (bob, bob789, boblab.com, user), (charlie, charlie0, charlielab.com, user), (root, root321, rootlab.com, admin); -- 创建敏感密钥表模拟 Flag CREATE TABLE IF NOT EXISTS secrets ( id INT PRIMARY KEY, secret_key VARCHAR(100) ); INSERT INTO secrets VALUES (1, FLAG{sqli_is_fun}), (2, FLAG{never_trust_user_input});2. Docker 启动并挂载自动执行利用 MySQL 官方镜像特性将 SQL 文件挂载至/docker-entrypoint-initdb.d/目录容器初次启动时会自动执行建库建表PowerShell# PowerShell 环境 docker run -d --name mysql-lab -p 3306:3306 -e MYSQL_ROOT_PASSWORDroot -v ${PWD}/init.sql:/docker-entrypoint-initdb.d/init.sql mysql:5.73. 数据验证PowerShelldocker exec -it mysql-lab mysql -uroot -proot -e USE sqli_lab; SELECT * FROM secrets;二、MSSQL 2019 靶场搭建与验证1. 启动 MSSQL 容器⚠️密码策略提醒MSSQL 对管理员sa密码有强制复杂度要求至少 8 位包含大小写字母、数字和特殊字符。PowerShelldocker run -d --name mssql-lab -e ACCEPT_EULAY -e SA_PASSWORDYourStrongPassw0rd -p 1433:1433 [mcr.microsoft.com/mssql/server:2019-latest](https://mcr.microsoft.com/mssql/server:2019-latest)2. 命令行快速初始化数据在新版 MSSQL 容器中sqlcmd工具位于/opt/mssql-tools18/bin/sqlcmd需加-C参数信任自签名证书PowerShelldocker exec -it mssql-lab /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P YourStrongPassw0rd -C -Q CREATE DATABASE sqli_lab; GO USE sqli_lab; GO CREATE TABLE users ( id INT PRIMARY KEY IDENTITY(1,1), username NVARCHAR(50), password NVARCHAR(50), role NVARCHAR(20) DEFAULT user ); CREATE TABLE secrets ( id INT PRIMARY KEY, secret_key NVARCHAR(100) ); INSERT INTO secrets VALUES (1, NFLAG{mssql_is_powerful}); 三、DataGrip 图形化连接与配置1. 连接 MySQLHost:localhostPort:3306User:rootPassword:rootDatabase:sqli_lab2. 连接 MSSQL (SQL Server)Host:localhostPort:1433User:saPassword:YourStrongPassw0rdDatabase:sqli_lab⚠️ 核心避坑SSL 证书切换到Advanced (高级)标签页将trustServerCertificate改为true否则测试连接会因自签名证书校验失败而报错。四、高频报错与踩坑总结重点复盘坑点 1bind: Only one usage of each socket address is normally permitted原因本机已运行了本地 MySQL导致3306端口被占用。解决办法方案 A更改宿主机映射端口为3307-p 3307:3306。方案 B使用netstat -ano | findstr :3306查出占用进程的 PID 并终止。坑点 2挂载了init.sql但数据库依然为空原因容器如果不是“初次创建”或数据卷已存在残留不会重新触发/docker-entrypoint-initdb.d/脚本。解决办法先彻底删除旧容器docker rm -f mysql-lab然后再重新运行启动命令。坑点 3MSSQL 执行报错Could not find stored procedure GO原因GO是终端工具如sqlcmd的批处理分隔符并非标准 SQL 语法。在 DataGrip / DBeaver 等图形化工具中直接写 SQL 语句并以分号;结尾即可不需要输入GO。总结通过 Docker 容器化方案我们可以分钟级拉起隔离、干净的漏洞测试环境。结合 DataGrip 的智能补全与语法检查能大幅提升 SQL 注入练习和脚本编写的效率。

相关新闻

LarkXR 十年云渲染,让3D触手可及

LarkXR 十年云渲染,让3D触手可及

十年,我们改变了3D世界的打开方式2016年,"大众创业、万众创新"的浪潮正席卷而来。那一年,我做了一个决定——离开工作了11年的惠普,和朋友一起从零开始,创立了平行云。那时候,"云渲染"…

2026/9/12 0:00:03 阅读更多 →
Ryujinx 资源管理太费劲?用 RyuSAK 把固件、密钥、着色器一次配齐

Ryujinx 资源管理太费劲?用 RyuSAK 把固件、密钥、着色器一次配齐

Ryujinx 资源管理太费劲?用 RyuSAK 把固件、密钥、着色器一次配齐 【免费下载链接】RyuSAK 项目地址: https://gitcode.com/gh_mirrors/ry/RyuSAK 先讲一个被资源劝退的夜晚 如果你玩过 Ryujinx,多半经历过这样的夜晚:游戏装好了&am…

2026/9/17 8:37:30 阅读更多 →
2026年国内梯级链制造领域现有主要供应厂商公开信息整理

2026年国内梯级链制造领域现有主要供应厂商公开信息整理

2026年国内梯级链制造领域现有主要供应厂商公开信息整理2026年梯级链供应市场的行业现状与用户需求近年来,梯级链作为电扶梯核心机械配件,在多个公共交通与商业领域应用广泛,市场对扶梯链条的稳定性与适配性要求不断提升。不同需求方在寻找工…

2026/9/13 15:52:22 阅读更多 →

最新新闻

3道瑟银矿真题拆解:别再背八股文了

3道瑟银矿真题拆解:别再背八股文了

3道瑟银矿真题拆解:别再背八股文了 看了一堆教程还是不会写项目?别慌,这不是你笨,是没人告诉你怎么把知识串成线。 最近聊到 面试必问 的底层逻辑,发现很多候选人卡在“懂概念”但“不会落地”上。尤其是 瑟银矿…

2026/9/22 19:12:19 阅读更多 →
关于安全的图片处理避坑指南:从报错到精通实战

关于安全的图片处理避坑指南:从报错到精通实战

关于安全的图片处理避坑指南:从报错到精通实战 盯着屏幕上一片鲜红的 NullPointerException 和 OutOfMemoryError ,手里拿着刚上传的 4K 高清原图,CPU 风扇狂转却卡死在进度条…

2026/9/22 19:12:19 阅读更多 →
Cargo 为什么存在:从 `rustc` 到 Rust 包管理器的演进之路

Cargo 为什么存在:从 `rustc` 到 Rust 包管理器的演进之路

开发工具包管理器CLI构建工具 【免费下载链接】cargo The Rust package manager 项目地址: https://gitcode.com/gh_mirrors/car/cargo 点击查看 免费下载 Cargo 是 Rust 的官方包管理器(package manager),本指南将带你理解它诞生…

2026/9/22 19:11:18 阅读更多 →
手写实现迁移系统:3步搞定数据库平滑升级不宕机

手写实现迁移系统:3步搞定数据库平滑升级不宕机

手写实现迁移系统:3步搞定数据库平滑升级不宕机 凌晨两点,生产环境突然报警。数据库连接池打满,业务接口全部超时。运维拉出日志,满屏红色的 SQLException 和复杂的 StackTrace…

2026/9/22 19:11:18 阅读更多 →
PS描边路径5大坑:从报错到修复的避坑指南

PS描边路径5大坑:从报错到修复的避坑指南

PS描边路径5大坑:从报错到修复的避坑指南 复制来的代码跑不通,报错信息一堆却不知从哪下手调?这种绝望感每个开发者都懂。今天这篇ps描边路径避坑指南,专治各种“看着对但跑不出结果”的疑难杂症。 坑一:路径坐标越界导致的静默失败 现象:…

2026/9/22 19:11:18 阅读更多 →
东方天空璋性能优化保姆级教程:3招解决学会语法却不知怎么搭项目的痛点

东方天空璋性能优化保姆级教程:3招解决学会语法却不知怎么搭项目的痛点

东方天空璋性能优化保姆级教程:3招解决学会语法却不知怎么搭项目的痛点 你是不是也遇到过这种情况?书上的代码能跑通,API文档背得滚瓜烂熟,但真到了要搭一个像样的项目时,脑子一片空白。明明每个函数都认识,组合在一起却像一盘散沙,性能更是惨不忍…

2026/9/22 19:11:18 阅读更多 →

日新闻

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天 配置环境就卡半天?别怪机器慢,多半是你没选对工具链。在Java、Go或Python的项目现场, 手写实现…

2026/9/22 0:00:41 阅读更多 →
剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑 面试被问原理答不上来,是不是常态?别慌。很多开发者对着 GitHub 开源仓库里的代码发呆,看似简单实则暗藏玄机。今天这份【剑帝加点】速查手册,直接带你拆解核心实现,把面试必考的原理讲透。…

2026/9/22 0:00:41 阅读更多 →
手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优 复制来的代码跑不通不知道怎么调?别慌,这种“复制粘贴地狱”在开发圈太常见了。尤其是做 图片压缩网站…

2026/9/22 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/22 4:32:41 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/22 4:38:57 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/22 8:51:04 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/22 2:43:42 阅读更多 →