CentOS 7 系统 SQLi-Labs 容器安装教程
CentOS 7 系统(已装 Docker)SQLi-Labs 容器安装教程
一、推荐方式:直接拉取镜像(1分钟启动,首选)
无需复杂配置,直接使用社区成熟镜像,包含 Apache + PHP + MySQL 完整环境:
1. 拉取 SQLi-Labs 镜像
打开 CentOS 7 终端,执行以下命令拉取镜像(维护活跃、兼容 CentOS):
docker pull acgpiano/sqli-labs
2. 启动容器(映射端口+后台运行)
docker run -d -p 80:80 -p 3306:3306 --name sqli-labs --restart=always acgpiano/sqli-labs
- 参数说明:
--restart=always:CentOS 重启后容器自动启动(避免手动重启);-p 80:80:主机 80 端口映射容器 Apache 端口(访问网页用);-p 3306:3306:主机 3306 端口映射容器 MySQL 端口(可选,如需本地连接数据库);--name sqli-labs:容器命名,方便后续管理。
3. 验证容器状态
执行命令查看容器是否正常运行:
docker ps
若输出中包含 sqli-labs 且 STATUS 为 Up(如 Up 5 minutes),则启动成功。
二、访问并初始化靶场
1. 访问靶场页面
打开本地浏览器(或其他设备浏览器),输入地址:
http://你的CentOS主机IP # 如 http://192.168.1.100

- 若 CentOS 7 开启了防火墙,需放行 80 端口(否则无法访问),执行以下命令:
# 放行 80 端口(永久生效) sudo firewall-cmd --permanent --add-port=80/tcp # 重启防火墙使配置生效 sudo firewall-cmd --reload
2. 初始化数据库
首次访问会进入 SQLi-Labs 配置页面,点击底部绿色按钮 Setup/reset Database,自动创建靶场所需的 security 数据库、测试表和数据。
- 若提示「数据库连接失败」:默认 MySQL 密码为
root,无需修改配置,刷新页面重试即可(镜像已预设好连接参数)。
3. 开始练习
初始化成功后,点击顶部 Home 回到首页,即可选择 Less-1 ~ Less-65 进行 SQL 注入练习(Less-1 是最基础的联合查询注入)。
三、CentOS 专属操作与避坑
1. 端口冲突解决(CentOS 常见)
-
80 端口被占用(如 Apache、Nginx):修改映射端口为 8080(或其他闲置端口),例如:
# 停止原有冲突容器 docker stop sqli-labs # 重新启动,映射 8080 端口 docker run -d -p 8080:80 -p 3306:3306 --name sqli-labs --restart=always acgpiano/sqli-labs # 放行 8080 端口(防火墙) sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --reload访问地址改为:
http://你的CentOSIP:8080。 -
3306 端口被本地 MySQL 占用:修改 MySQL 映射端口为 3307,例如:
docker run -d -p 80:80 -p 3307:3306 --name sqli-labs --restart=always acgpiano/sqli-labs不影响靶场使用(靶场内部已自动连接容器内 MySQL)。
2. 容器常用管理命令(CentOS 终端执行)
| 操作 | 命令 |
|---|---|
| 停止容器 | docker stop sqli-labs |
| 重启容器 | docker restart sqli-labs |
| 查看容器日志(排错) | docker logs sqli-labs |
| 进入容器内部(调试) | docker exec -it sqli-labs /bin/bash |
| 删除容器(需先停止) | docker rm sqli-labs |
3. 防火墙额外说明
CentOS 7 默认启用 firewalld,若后续无法访问靶场,可检查端口是否放行:
# 查看已放行端口
sudo firewall-cmd --list-ports
# 若未显示 80/tcp 或 8080/tcp,重新执行放行命令
四、可选:自定义 MySQL 配置(Docker Compose 方式)
若需修改 MySQL 密码、持久化数据,可使用 Docker Compose(CentOS 7 需先安装):
1. 安装 Docker Compose
# 下载最新版本
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --version
2. 创建配置文件
# 新建文件夹存放配置
mkdir -p /opt/sqli-labs && cd /opt/sqli-labs
# 新建 docker-compose.yml 文件
sudo vi docker-compose.yml
粘贴以下内容(自定义 MySQL 密码、端口):
version: '3'
services:
mysql:
image: mysql:5.7 # 兼容 SQLi-Labs,避免 MySQL 8.0 权限问题
container_name: sqli-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: yourpass123 # 自定义 root 密码
MYSQL_DATABASE: security
ports:
- "3307:3306" # 映射 3307 端口,避免冲突
volumes:
- mysql-data:/var/lib/mysql # 持久化数据
networks:
- sqli-net
sqli-labs:
image: acgpiano/sqli-labs
container_name: sqli-labs
restart: always
ports:
- "80:80"
depends_on:
- mysql
networks:
- sqli-net
volumes:
mysql-data:
networks:
sqli-net:
3. 启动服务
# 后台启动
docker-compose up -d
# 查看状态
docker-compose ps
访问和初始化步骤同上,若数据库连接失败,需进入容器修改配置:
# 进入 sqli-labs 容器
docker exec -it sqli-labs /bin/bash
# 编辑数据库配置文件
vi /var/www/html/sql-connections/db-creds.inc
# 修改 $dbpass 为你自定义的 MySQL 密码(如 yourpass123)
$dbpass = 'yourpass123';
# 保存退出(按 Esc,输入 :wq 回车)
总结
CentOS 7 已装 Docker 时,方式一(直接拉取镜像) 最便捷,执行 2 条命令即可启动靶场,配合防火墙放行 80 端口就能正常访问。若需自定义配置,再用 Docker Compose 方式,全程无需担心环境冲突,专注 SQL 注入学习即可~
更多推荐
所有评论(0)