1. 项目概述
SQLi-Labs Less-4 是一个经典的SQL注入靶场环境,专门用于练习双引号加括号闭合的字符型GET注入技术。这个靶场模拟了Web应用中常见的SQL注入漏洞场景,特别适合安全研究人员和渗透测试人员用来提升实战能力。
在实际Web开发中,字符型参数注入是SQL注入攻击的主要形式之一。Less-4的特殊之处在于它采用了双引号包裹参数值并用括号闭合SQL语句的写法,这种形式在PHP等动态网站开发中并不少见。通过这个靶场的练习,我们可以掌握这类特殊闭合方式的注入技巧。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与基础分析
2.1 靶场环境搭建
要开始Less-4的练习,首先需要搭建SQLi-Labs环境。推荐使用以下配置:
- 安装XAMPP或WAMP集成环境
- 下载SQLi-Labs源码并解压到htdocs目录
- 启动Apache和MySQL服务
- 访问http://localhost/sqli-labs进入靶场
注意:建议在虚拟机或隔离环境中搭建靶场,避免对真实系统造成影响
2.2 目标页面分析
访问Less-4页面后,我们会看到一个简单的用户查询界面。URL结构如下:
code复制http://localhost/sqli-labs/Less-4/?id=1
通过修改id参数值,页面会返回对应的用户信息。我们的目标是利用这个参数实现SQL注入。
2.3 注入类型判断
首先需要确定注入类型。通过以下测试可以确认是字符型注入:
- 输入
id=1- 正常返回 - 输入
id=1'- 仍然正常返回 - 输入
id=1"- 页面报错或返回异常
这表明参数值是用双引号包裹的。进一步测试发现使用id=1")也会导致报错,说明SQL语句还包含括号闭合。
3. 注入技术详解
3.1 闭合方式分析
通过错误信息可以推测后台SQL语句大致如下:
sql复制SELECT * FROM users WHERE id=("$id") LIMIT 0,1
因此,我们需要构造payload时先闭合双引号和括号,再添加我们的注入代码。典型的闭合方式为:
code复制") [注入代码] --+
其中--+是注释符,用于注释掉原SQL语句中剩余的部分。
