SQL 注入靶场搭建 (SQLi-LABS)
环境要求
- 操作系统: Windows 10/11
- 集成环境: PHPStudy Pro
- 靶场: SQLi-LABS
搭建步骤
1. 下载并解压 SQLi-LABS
SQLi-LABS 可以从 GitHub 下载:
官方地址:
https://github.com/Audi-1/sqli-labs
下载方式:
- 直接下载 ZIP:
- 访问上面的 GitHub 地址
- 点击绿色的 Code 按钮
- 选择 Download ZIP
- 解压到 D:\phpstudy_pro\WWW\ 目录 - 使用 Git 克隆(如果安装了 Git):
cd D:\phpstudy_pro\WWW
git clone https://github.com/Audi-1/sqli-labs.git sqli-labs-master
下载后的文件名:
- ZIP 下载会得到 sqli-labs-master.zip
- 解压后是 sqli-labs-master 文件夹
将sqli-labs-master压缩包解压到 PHPStudy 的 WWW 目录:
D:\phpstudy_pro\WWW\sqli-labs-master\2. 配置数据库连接
打开配置文件:
D:\phpstudy_pro\WWW\sqli-labs-master\sql-connections\db-creds.inc修改数据库密码:
<?php$dbuser='root';$dbpass='你的数据库密码';// 修改这里$dbname='security';$host='localhost';?>保存文件 (Ctrl+S)。
3. 配置 PHP 版本
选择 PHP 版本:
- 打开 PHPStudy 管理面板
- 为
localhost网站选择PHP 5.2.17 nts - 注意: SQLi-LABS 不支持过高的 PHP 版本
4. 修改 PHP 配置
打开 php.ini:
D:\phpstudy_pro\Extensions\php\php-5.2.17\php.ini修改魔术引号配置:
- 搜索 (Ctrl+F):
magic_quotes_gpc - 将
magic_quotes_gpc = On改为magic_quotes_gpc = Off - 保存文件 (Ctrl+S)
为什么要关闭:
magic_quotes_gpc = On会自动转义单引号等特殊字符- 转义后无法演示 SQL 注入漏洞
- 关闭后才能进行注入测试
5. 重启 PHPStudy
修改配置后,重启 Apache使配置生效。
6. 初始化数据库
访问地址:
http://localhost/sqli-labs-master/点击 “Setup/reset Database for labs”初始化数据库。
成功标志:
Database created successfully7. 显示 SQL 语句(可选 - 方便调试)
为了更直观地看到后端执行的 SQL 语句,可以修改源码:
打开文件:
D:\phpstudy_pro\WWW\sqli-labs-master\Less-1\index.php在适当位置添加:
echo"SQL语句:".$sql."<br>";添加位置示例:
// 原代码$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";// 在查询前添加echo"SQL语句:".$sql."<br>";// 添加这行// 执行查询$result=mysql_query($sql);保存后刷新页面,就能看到实际执行的 SQL 语句。
验证安装
测试 Less-1
访问:
http://localhost/sqli-labs-master/Less-1/?id=1正常显示:
Your Login name: Dumb Your Password: Dumb测试注入:
http://localhost/sqli-labs-master/Less-1/?id=1'应该报错:
You have an error in your SQL syntax如果出现以上结果,说明靶场搭建成功!
常见问题
Q1: 访问页面空白或 500 错误
解决:
- 检查 PHP 版本是否选择了 5.2.17
- 检查 Apache 是否正常启动
- 查看 PHPStudy 错误日志
Q2: 无法连接数据库
解决:
- 确认 MySQL 已启动
- 检查
db-creds.inc中的密码是否正确 - 尝试用 phpMyAdmin 登录验证密码
Q3: Setup Database 按钮无反应
解决:
- 检查 MySQL 用户权限
- 确保
root用户有创建数据库的权限 - 查看浏览器控制台是否有 JS 错误
Q4: 添加 echo 后页面报错
解决:
- 确保添加在 SQL 查询语句定义之后
- 检查 PHP 语法是否正确(分号、引号)
- 查看 Apache 错误日志
Q5: magic_quotes_gpc 找不到
解决:
- PHP 5.4+ 已移除该选项,无需配置
- 如果使用更高版本 PHP,可能导致部分关卡无法演示
- 建议使用 PHP 5.2.17 或 5.3.x
安全提醒
- 仅用于学习: 本靶场仅用于学习 SQL 注入原理和防御方法
- 不要部署到公网: SQLi-LABS 存在大量漏洞,切勿部署到互联网
- 本地测试: 仅在本地环境或隔离的虚拟机中使用
- 及时关闭: 学习完毕后及时关闭 PHPStudy 服务
日期: 2026-07
环境: Windows 11 + PHPStudy Pro + SQLi-LABS
参考资料: SQLi-LABS 官方文档
声明: 本文仅用于网络安全学习和研究,请勿用于非法用途。