sqli-labs靶场安装与使用指导教程(3种方法:通用版、php7版、Docker版)

目录

一、SQLI-LABS靶场

1、核心特点

2、关卡难度

二、源码安装法

1、开启Web服务和数据库服务

2、靶场源码下载

(1)通用版本

(2)PHP7版本

3、部署sqli-labs靶场

(1)确认网站根目录位置

(2)部署靶场

4、修改数据库配置

5、配置PHP版本

(1)通用sqli-labs靶场

(2)sqli-labs7靶场

6、sqli-labs靶场安装

7、访问sqli-labs靶场

三、Docker安装法

1、拉取镜像

2、运行容器

3、访问靶场


本文讲解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-10GET - 错误型/联合查询字符型注入基础,单引号闭合,联合查询★☆☆☆☆
11-22POST - 错误型/其他POST请求注入,HTTP头注入,UPDATE注入★★☆☆☆
23-25GET - 过滤绕过注释符被过滤,需要引号闭合★★☆☆☆
26-28GET - 过滤绕过空格和关键字被过滤,需要替代符★★★☆☆
38-45GET - 堆叠查询执行多语句,功能强大★★★★☆
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"。将压缩包下载到电脑上。

https://github.com/Audi-1/sqli-labs

(2)PHP7版本

如果计划使用php7版本的sqli-labs靶场, 那么需要下载指定的版本,具体步骤如下所示。

  • 访问 SQLI-LABS 的 GitHub 仓库:https://github.com/skyblueee/sqli-labs-php7

  • 点击绿色的 "Code" 按钮,然后选择 "Download ZIP"。将压缩包下载到电脑上。

https://github.com/skyblueee/sqli-labs-php7

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安装法省时省力,避免了所有环境配置的麻烦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/94605.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/94605.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零开始配置前端环境及必要软件安装

从零开始配置前端环境及必要软件安装一、安装编辑器二、安装浏览器三、安装Git版本控制工具四、Node.js 和 npm 环境变量配置1. 安装 Node.js 和 npm2. 配置全局模块和缓存目录3. 设置环境变量4. 更换 npm 镜像源5. 测试配置五、hosts文件六、辅助应用markdown(笔记…

神经网络模型搭建及手写数字识别案例

代码实现:import torch print(torch.__version__) from torch import nn from torch.utils.data import DataLoader from torchvision import datasets from torchvision.transforms import ToTensor training_data datasets.MNIST(rootdata,trainTrue,downloadTru…

CRMEB标准版PC扫码登录配置教程(PHP版)

需要在开放平台创建网站应用 微信开放平台地址:https://open.weixin.qq.com/ 1、注册网站应用 2、填写信息,网站地址填写前台访问的域名就行 3、复制开放平台AppId和开放平台AppSecret 4、粘贴到后台应用配置的PC站点配置里

AmazeVault 核心功能分析,认证、安全和关键的功能

系列文章目录 Amazevault 是一款专注于本地安全的桌面密码管理器 AmazeVault 核心功能分析,认证、安全和关键的功能 AmazeVault 快速开始,打造个人专属桌面密码管理器 文章目录系列文章目录前言一、认证系统核心组件图形解锁实现图形锁控件 (PatternLoc…

Coze用户账号设置修改用户昵称-后端源码

前言 本文将深入分析Coze Studio项目的用户昵称修改功能后端实现,通过源码解读来理解整个昵称更新流程的架构设计和技术实现。用户昵称修改作为用户个人信息管理系统的重要组成部分,主要负责处理用户显示名称的更新和管理。 昵称修改功能相对简单但不失重…

基于WebTransport(底层QUIC)实现视频传输(HTML+JavaScript)

工作目录和基本操作见博客《基于HTTP3的WebTransport实践》,在此仅展示服务器端和客户端代码。 服务器端 import { readFile } from "node:fs/promises"; import { createServer } from "node:https"; import {Server} from "socket.io&qu…

Git 怎么仓库迁移?error: remote origin already exists.怎么解决

1. 确认本地已经有完整的 旧 仓库你本地应该有旧的项目,并且能看到 .git 文件夹。如果没有,可以先从旧仓库克隆下来:git clone 旧仓库git地址 cd 旧代码目录比如:git clone https://gitee.com/star-information/esflow-pro-api.gi…

【语法】【C+V】本身常用图表类型用法快查【CSDN不支持,VSCODE可用】

文章目录Mermaid 简介Mermaid 由三部分组成Mermaid 的使用方法复杂图表结构的技巧饼图简介饼图语法饼图示例雷达图简介雷达图语法雷达图语法细节标题轴曲线选项雷达图示例时间线简介时间线语法时间线示例树形图简介树形图语法树形图示例数据包图简介数据包图语法1:数…

Anaconda下载安装教程(附Anaconda安装包)

Anaconda下载安装教程(附Anaconda安装包)获取:python开发工具包丨夸克网盘-资源免费下载 有位小粉丝刚刚入门python,问我怎么安装Anaconda,于是我帮他找了一个详细的Anaconda安装教程和安装包。 Anaconda其实是一个p…

那我现在有3个输入 9层神经元 每层神经元数为 3 9 3 5 6 2 3 9 8 请给出我所有的权重矩阵

问题1 那我现在有3个输入 9层神经元 每层神经元数为 3 9 3 5 6 2 3 9 8 请给出我所有的权重矩阵 明白,我们来系统地列出你的 9层全连接网络 的权重矩阵。1️⃣ 网络结构 输入层:3 个神经元隐藏层/输出层:9 层神经元数分别为 [3,9,3,5,6,2,3,9…

广东省省考备考(第八十七天8.26)——判断推理(听课后强化训练)

判断推理:定义判断 错题解析 第一步:找出定义关键词。 “农村中各项经济活动及由此产生的经济关系”、“同农业有直接或间接的关系”。 第二步:逐一分析选项。 A项:该项指出具体的夏粮产量和增量,其中生产粮食属于种植…

读取 STM32H5 Data Flash 触发 NMI 的问题解析 LAT1544

关键字:STM32H5, data flash, high-cycle data, NMI问题描述客户反馈,使用 STM32H563 的 data flash(high-cycle data flash),在还没有写入任何数据之前去读取 data flash, 会触发 hardfault 异常。1. 问题分析我们尝试在 NUCLEO-…

学云计算还是网络,选哪个好?

云计算工程师和网络工程师,都是IT界香饽饽,但方向差很大!选错路后悔3年!今天极限二选一,帮你彻底搞懂工作职责 网络工程师:网络世界的交警工程师!主要管物理网络和逻辑连接。负责设计、搭建、维…

Matlab使用——开发上位机APP,通过串口显示来自单片机的电压电流曲线,实现光伏I-V特性监测的设计

预览此处的测试数据的采集频率和曲线变化是通过更换电阻来测试的,所以电压电流曲线显示并不是很平滑,图中可以看到每一个采集点的数值。这个设计是福州大学第三十期SRTP的一个校级的项目,打算通过分布式的在线扫描电路低成本的单片机&#xf…

云原生 JVM 必杀技:3 招让容器性能飞跃 90%

最近佳作推荐: Java 大厂面试题 – JVM 与分布式系统的深度融合:实现技术突破(34)(New) Java 大厂面试题 – JVM 新特性深度解读:紧跟技术前沿(33)(New&#…

你真的了解操作系统吗?

文章目录操作系统是什么?操作系统核心功能为什么需要操作系统(目的)?操作系统的下层是什么?上层又是什么?如何理解“管理”?——“先描述,再组织”操作系统是什么? 任何…

从0到1详解requests接口自动化测试

前言 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。 1、理解什么是接口 接口一般来说有两种…

Linux系统操作编程——http

万维网www万维网是一个大规模的、联机式的信息储藏所 ,实现从一个站点链接到另一个站点万维网服务器后台标记万维网数据方式:url:统一资源定位符万维网客户端与万维网服务器的通信方式:HTTP:超文本传输协议万维网客户端…

Langchian-chatchat私有化部署和踩坑问题以及解决方案[v0.3.1]

文章目录一 langchain-chatchat项目二 本地私有部署2.1 源码下载2.2 创建虚拟环境2.3 安装Poetry2.4 安装项目依赖2.5 初始化项目2.6 修改配置信息2.7 初始化知识库2.8 启动服务三 问题和解决方法3.1 poetry和packaging版本兼容性3.2 Langchain-chatchatPDF加载错误分析[win平台…

Day3--HOT100--42. 接雨水,3. 无重复字符的最长子串,438. 找到字符串中所有字母异位词

Day3–HOT100–42. 接雨水,3. 无重复字符的最长子串,438. 找到字符串中所有字母异位词 每日刷题系列。今天的题目是力扣HOT100题单。 双指针和滑动窗口题目。其中438题踩了坑,很值得看一下。 42. 接雨水 思路: 每个位置i&#x…