1. 环境准备:搭建你的第一个SQL注入靶场
很多朋友一听到“SQL注入”、“网络安全”就觉得头大,感觉是那些戴着黑帽子的神秘黑客才能玩转的东西。其实不然,我刚开始接触的时候也这么觉得,但上手后发现,只要环境搭得好,原理掰开了揉碎了讲,小白也能轻松复现这些攻击,并真正理解背后的门道。今天,我们就用 SEED Labs 2.0 这个经典教材里的实验,在 Docker 环境下,从零开始,一步步带你玩转SQL注入攻击与防御。
为什么用Docker?因为它能一键给我们创造一个干净、隔离、可复现的实验环境,避免了在本地安装配置各种数据库和Web服务器的麻烦,即使搞砸了也能瞬间恢复。这就像给你一个专属的沙盘,随便你怎么“挖坑”和“填坑”,都不会影响到你电脑的其他部分。
首先,你得确保电脑上已经安装了Docker和Docker Compose。如果没有,去官网下载安装,步骤非常傻瓜式。然后,我们获取实验所需的配置文件。通常SEED Labs的代码会放在GitHub上,我们可以直接克隆下来。
# 假设我们把实验代码克隆到本地的一个目录
git clone [SEED Labs的仓库地址]
cd SQL_Injection_Attack_Lab/
进入实验目录后,你会看到几个关键文件,特别是 docker-compose.yml。这个文件定义了两个容器:一个运行 MySQL 数据库,另一个运行存在漏洞的 PHP Web应用。我们只需要一条命令就能让整个环境跑起来:
# 构建并启动容器(-d 表示后台运行)
docker-compose up -d
执行完后,别急着关掉终端。我们可以用 docker ps 命令看看容器是否正常运行。SEED Labs通常还很贴心地提供了别名命令,让你操作更简便:
# 查看运行中的容器,格式更友好
dockps
# 示例输出可能类似:
# CONTAINER ID IMAGE ... NAMES
# a1b2c3d4e5f6 mysql-10.9.0.6 sql-container
# f6e5d4c3b2a1 www-10.9.0.5 web-container
看到两个容器都跑起来,就成功了一大半。接下来,我们需要让本机能够访问这个实验网站。容器内的Web应用通常映射到特定的IP,比如 10.9.0.5。我们需要修改一下本机的 hosts 文件,把这个IP和我们自定义的域名(比如 www.seed-server.com)绑定起来。
# 在Linux或Mac上,可能需要sudo权限编辑 /etc/hosts
# 在Windows上,文件路径是 C:\Windows\System32\drivers\etc\hosts
# 在文件末尾添加一行:
10.9.0.5 www.seed-server.com
保存之后,打开浏览器,访问 http://www.seed-server.com。如果一切顺利,你应该能看到一个简单的员工登录页面。恭喜你,你的个人SQL注入攻防实验室已经正式上线了!这个环境里预置了几个员工账号,比如Alice、Boby、Admin等,他们的密码通常是“seed”加上用户名(例如Alice的密码是seedalice)。我们先别急着攻击,在动手之前,得先摸清这个“战场”的地形,也就是熟悉一下靶场里的数据库结构。
2. 初探数据库:像管理员一样直接查看数据
在发动攻击之前,一个好的习惯是先了解目标。我们直接登录到MySQL数据库内部去看看。通过Docker,我们可以轻松进入数据库容器内部进行操作。
# 首先用 dockps 找到MySQL容器的ID(前几位字符就行)
dockps
# 假设MySQL容器ID是 a1b2,我们进入其shell环境
docksh a1
# 现在我们已经进入了容器内部,提示符变成了 root@xxxxx:/#
# 接着登录MySQL,用户名root,密码在SEED Labs里通常是 'dees'
mysql -u root -pdees
成功登录MySQL后,你会看到 mysql> 提示符。我们先看看有哪些数据库:
SHOW DATABASES;
你应该能看到一个名为 sqllab_users 的数据库,这就是我们的目标。使用这个数据库,并查看里面的表:
USE sqllab_users;
SHOW TABLES;
输出会显示只有一个表,名叫 credential。我们用 DESCRIBE


7427

被折叠的 条评论
为什么被折叠?



