目录
本文讲解sqli-labs靶场的安装方法,包括源码安装法(普通版本、php7版本)和Docker法的完整安装方法。
一、SQLI-LABS靶场
SQLI-LABS 是一个专为学习和练习 SQL 注入 (SQL Injection)技术而设计的开源靶场平台。由印度安全研究员 Audi Singh 开发。它提供了一个合法且安全的环境,让网络安全爱好者、学生和安全专业人员能够从基础到高级,系统地理解和掌握各种类型的 SQL 注入攻击手法。
1、核心特点
SQLi-Labs 是一个专注于 SQL 注入学习与实践的开源靶场项目,其核心特点如下表所示。
特点类别 | 具体说明 |
---|---|
场景全面 | 覆盖几乎所有常见 SQL 注入类型,包括: - 基于错误的注入(Error-Based SQLi) - 布尔盲注(Boolean-Based Blind SQLi) - 时间盲注(Time-Based Blind SQLi) - 联合查询注入(Union-Based SQLi) - 堆叠查询注入(Stacked Queries SQLi) - 二次注入、宽字节注入等特殊场景。 |
分级设计 | 按 "Lessons"(关卡)划分,难度循序渐进: - 基础关(如 Less-1):单引号闭合注入,适合入门。 - 进阶关(如 Less-5/9):盲注场景,需依赖报错或时间延迟判断逻辑。 - 高阶关(如 Less-23/31):过滤绕过、Cookie 注入等复杂场景。 |
多数据库支持 | 默认以 MySQL 为演示环境,支持通过配置扩展至 SQL Server、Oracle 等主流数据库,适配不同数据库的注入特性。 |
开源免费 | 项目完全开源,代码托管于 GitHub(链接),可自由下载、部署、修改源码 |
可扩展性 | 支持自定义修改数据库结构、PHP 代码逻辑,可用于验证防御措施(如参数化查询、输入过滤)的有效性,或扩展新的场景。 |
2、关卡难度
SQLI-LABS 的Lessons 1-65 的挑战路径可以概括为:从显错注入到盲注,从GET到POST,从普通查询到堆叠查询,同时不断融入各种过滤绕过技巧。难度呈阶梯式上升,具体如下表所示。
关卡范围 | 主要注入类型 | 核心考点与特点 | 难度 |
---|---|---|---|
1-10 | GET - 错误型/联合查询 | 字符型注入基础,单引号闭合,联合查询 | ★☆☆☆☆ |
11-22 | POST - 错误型/其他 | POST请求注入,HTTP头注入,UPDATE注入 | ★★☆☆☆ |
23-25 | GET - 过滤绕过 | 注释符被过滤,需要引号闭合 | ★★☆☆☆ |
26-28 | GET - 过滤绕过 | 空格和关键字被过滤,需要替代符 | ★★★☆☆ |
38-45 | GET - 堆叠查询 | 执行多语句,功能强大 | ★★★★☆ |
54-65 | 盲注 (Boolean/Time) | 无回显,靠布尔逻辑或时间延迟猜解 | ★★★★★ |
二、源码安装法
1、开启Web服务和数据库服务
在开始安装之前,您的系统必须已经具备以下两个基础环境:Web 服务器 和数据库。本文以PHPStudy为例,首先打开phpstudy软件,启动Apache和MySQL,如下所示。

2、靶场源码下载
(1)通用版本
如果计划使用标准的sqli-labs靶场, 具体步骤如下所示。
-
访问 SQLI-LABS 的 GitHub 仓库:https://github.com/Audi-1/sqli-labs
-
点击绿色的 "Code" 按钮,然后选择 "Download ZIP"。将压缩包下载到电脑上。

(2)PHP7版本
如果计划使用php7版本的sqli-labs靶场, 那么需要下载指定的版本,具体步骤如下所示。
-
访问 SQLI-LABS 的 GitHub 仓库:https://github.com/skyblueee/sqli-labs-php7
-
点击绿色的 "Code" 按钮,然后选择 "Download ZIP"。将压缩包下载到电脑上。

3、部署sqli-labs靶场
(1)确认网站根目录位置
注意,这里如果不知道如何查找网址的根目录。可以打开小皮工具,点击左侧的网站工具栏,进入网站的页面,点击管理-打开网站的根目录,如下图所示:(我的phpstudy的安装位置在D盘的phpstudy_pro目录下,网站根目录就在软件安装目录的WWW目录下,以我的安装目录为例,即D:\phpstudy_pro\WWW\)

(2)部署靶场
单层解压刚刚下载的 压缩包文件(注意选择解压到当前文件夹),如下图所示。


将解压后的文件夹剪切或复制到网站根目录下,如下图所示。以我的环境为例,web服务的根目录为D:\phpstudy_pro\WWW\,那么sqli-labs靶场的目录即为D:\phpstudy_pro\WWW\sqli-labs\。

4、修改数据库配置
修改 sqli-labs/sql-connections
目录下的 db-creds.inc
文件,将其中数据库的部分进行如下图的修改,具体操作步骤如下图:

使用记事本或其他文本编辑软件打开,并确保数据库用户名、密码与真实环境的 MySQL 设置一致,修改后保存并关闭文件。

以我的环境为例,我使用的是PHPStudy中MySQL环境,可以在小皮工具-数据库(左侧红框)进入到数据库配置界面,然后将鼠标放到密码对应的密文处,明文密码就自动显示出来,我这里用户名root对应的密码是root,如上文件配置需要修改为root和root,说明这个修改是正确的。

5、配置PHP版本
(1)通用sqli-labs靶场
对于通用sqli-labs靶场,点击网站-管理-选择php 版本(选择php 版本不能过高7.xx 版本会有兼容性问题),这里我选择5.X的版本, 如下图所示。

(2)sqli-labs7靶场
对于sqli-labs7靶场,点击网站-管理-选择php 版本(选择php 版本为7.xx 版本),这里我选择7.3.30的版本, 如下图所示。

6、sqli-labs靶场安装
通过浏览器访问 sqli-labs 文件夹以加载 index.html。打开浏览器访问http://127.0.0.1/sqli-labs即可访问sqli-labs,如下图所示。

点击setup/reset database for labs创建数据库,如下图所示。

单击后自动创建数据库,出现下图说明数据库创建成功

7、访问sqli-labs靶场
打开浏览器访问http://127.0.0.1/sqli-labs即可访问安装好的sqli-labs靶场,如下图所示。此时实验准备就绪,点击对应的Page页并点击lesson 编号即可进入对应实验页面。

以Page1为例,点击Page1如上图红框内容,即进入到下图页面,此时点击less1进入第一关关卡。

此时进入到第一关,注意到URL变为http://127.0.0.1/sqli-labs/Less-1/

在地址栏后输入?id=2 显示数据库中的具体信息,如下图所示。

三、Docker安装法
1、拉取镜像
在终端中执行以下命令,从 Docker Hub 拉取现成的 sqli-labs 镜像。
docker pull acgpiano/sqli-labs
2、运行容器
拉取完成后,运行以下命令启动一个容器。
docker run -dt --name sqli-labs -p 8083:80 --restart=always acgpiano/sqli-labs
-
-dt
: 在后台运行容器并分配一个伪终端。 -
--name sqli-labs
: 为容器起一个名字,方便管理。 -
-p 8083:80
: 将宿主机的 8083端口 映射到容器的 80 端口(Web服务端口)。 -
--restart=always
: 确保 Docker 服务重启时,这个容器也自动重启。 -
acgpiano/sqli-labs
: 使用的镜像名。
3、访问靶场
打开浏览器,访问 http://localhost:8083
或 http://虚拟机IP:8083
。就可以进入 sqli-labs 的首页。点击 Setup/reset Database for labs
链接来初始化数据库,具体可以参考二(6)(7)部分。相对于源码安装方法而言,Docker安装法省时省力,避免了所有环境配置的麻烦。
