1. 靶场环境概述
SQLi-Labs 是一个专门用于学习和实践 SQL 注入技术的开源靶场项目。这个由印度安全研究员 Audi-1 开发的实验平台,包含了从基础到高级的多种 SQL 注入漏洞场景,目前已成为网络安全领域最受欢迎的实战训练环境之一。
我第一次接触这个靶场是在 2017 年的一次内部安全培训中,当时就被它精心设计的漏洞梯度所吸引。与那些将漏洞简单堆砌的练习平台不同,SQLi-Labs 的每个关卡都像是一个精心布置的密室,需要你运用不同的技巧和思维方式才能"逃脱"。
靶场采用 PHP+MySQL 架构搭建,整个项目由 75 个独立挑战组成(截至 v1.0 版本),分为以下四大类:
- 基本注入(Less-1 到 Less-21)
- 中级注入(Less-22 到 Less-40)
- 高级注入(Less-41 到 Less-65)
- 堆叠查询(Less-66 到 Less-75)
每个关卡都模拟了真实 Web 应用中可能存在的不同注入场景,包括但不限于:
- 基于错误的注入
- 基于布尔的盲注
- 基于时间的盲注
- 联合查询注入
- 报错注入
- 二次注入
- 宽字节注入
重要提示:虽然这是学习用的靶场,但请务必在隔离环境中部署。我曾在公司内网测试时不小心触发了防火墙规则,导致整个部门IP被临时封禁——这些注入流量在安全设备看来就是真实的攻击行为。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境搭建与配置
2.1 基础环境准备
推荐使用以下组合搭建测试环境:
- 操作系统:Ubuntu 20.04 LTS(兼容性最佳)
- Web 服务:Apache 2.4.x
- 数据库:MySQL 5.7(注意:8.0+版本会有语法兼容问题)
- PHP 版本:5.4 到 7.3 之间(7.4+会导致部分关卡无法正常工作)
这里有个血泪教训:有次为了图方便直接用了最新版的 PHP 8.0,结果发现 Less-29 到 Less-31 的关卡逻辑完全失效。后来查看源码才发现,这些关卡依赖的某些 PHP 函数在 8.0 版本中已被废弃。
2.2 详细安装步骤
- 下载项目源码:
bash复制wget https://github.com/Audi-1/sqli-labs/archive/refs/heads/master.zip
unzip master.zip
mv sqli-labs-master /var/www/html/sqli-labs
- 数据库配置:
sql复制CREATE DATABASE sqli_labs;
GRANT ALL PRIVILEGES ON sqli_labs.* TO 'sqlilab'@'localhost' IDENTIFIED BY 'random_password';
FLUSH PRIVILEGES;
- 修改配置文件:
php复制// 修改 /sql-connections/db-creds.inc
$dbuser = 'sqlilab';
$dbpass
