sqli-labs靶场通关笔记:第46-53关 order by注入

目录

[第46关 order by注入](#第46关 order by注入)

[第47关 '闭合的order by注入](#第47关 '闭合的order by注入)

[第48关 无报错回显的数字型order by注入](#第48关 无报错回显的数字型order by注入)

[第49关 无报错回显的'闭合型order by注入](#第49关 无报错回显的'闭合型order by注入)

[第50关 基于order by的堆叠注入](#第50关 基于order by的堆叠注入)

[第51关 '闭合的报错注入或堆叠注入](#第51关 '闭合的报错注入或堆叠注入)

[第52关 数字型盲注或堆叠注入](#第52关 数字型盲注或堆叠注入)

[第53关 '闭合的盲注或堆叠注入](#第53关 '闭合的盲注或堆叠注入)


第46关 order by注入

输入?sort=1和?sort=2看一下页面显示。发现返回的数据相同,但是顺序不同,猜测可能是利用了order by排序语句。当sort=1时是根据第一列的字段id来排序,sort=2时根据username字段排序。

在参数后面加上单引号,回显了报错信息,那么使用报错注入试试吧。

第47关 '闭合的order by注入

和上关的区别是使用了单引号包裹,要注意的是,这会导致 SQL 语句将$id当作一个字符串常量来处理,而不是列名或排序索引。由于字符串常量没有实际的排序意义,MySQL 会忽略这个排序条件,通常会按照表中数据的默认顺序返回结果,也就是插入数据时的顺序或者存储引擎决定的物理顺序。所以,无论你输入什么值,返回的结果顺序都不会改变。

第48关 无报错回显的数字型order by注入

利用布尔盲注,构造表达式来影响排序结果。

复制代码
#如果数据库名长度>5,则按第一列排序,否则按第二列排序;
order by if(length(database())>5,1,2)

这里数据库名长度是8,大于5会按第一列排序,写大于10也会按照第一列排序。因为MySQL 优化了常量表达式:当 IF 的两个分支都是常量时,MySQL 可能认为无论条件如何,排序规则都不变,因此忽略条件判断。所以应该避免使用常量作为排序键,改用与数据相关的表达式。

正确的语法构造是:

复制代码
#如果条件为真,按 id 列排序,否则按 username 列排序;
order by if(length(database())>5,id,username)

第49关 无报错回显的'闭合型order by注入

这关可以利用时间盲注,但是注意点较多。

复制代码
?sort=1' and if(length(database())<10,sleep(0),sleep(5)) --+

1.将IF判断设置为,true马上响应,false延迟响应。因为order by是对结果集进行排序,每一行都会计算一次,所以会导致多次延迟(行数次延迟),而且MySQL在排序时可能会优化,利用sleep函数时页面会一直处于长时间加载状态,最终会超过服务器允许的最大响应时间,而被强制终止,返回 500 错误。

2.order by 后面不能直接跟and,它的语法结构只接受列名、表达式或数字位置。 不过可以在排序表达式里使用包含and的逻辑条件来实现更复杂的排序规则。

3.这条注入语句破坏了原本正常的order by逻辑。原本order by期望的是列名,注入后变成了一个布尔表达式和 sleep 函数的组合,数据库无法按此进行有效的排序,所以结果可能会是乱序。

第50关 基于order by的堆叠注入

本关使用了mysqli_multi_query函数,那么直接堆叠注入。

第51关 '闭合的报错注入或堆叠注入

第52关 数字型盲注或堆叠注入

第53关 '闭合的盲注或堆叠注入

这三关就是把前面的几关结合在一起,使其有多种解题方法。

相关推荐
黄俊懿18 小时前
【架构师从入门到进阶】第五章:DNS&CDN&网关优化思路——第八节:网关-注入攻击与预防
sql·网络安全·架构·系统架构·架构师·架构设计
黄俊懿18 小时前
【架构师从入门到进阶】第五章:DNS&CDN&网关优化思路——第七节:网关-XSS攻击与预防
网关·网络安全·架构·系统架构·架构师·xss·架构设计
数据知道18 小时前
.NET 反序列化漏洞——ViewState 与 BinaryFormatter 实战深度剖析
网络·网络安全·.net
HackTwoHub21 小时前
Butter_Cookie 黄油曲奇|浏览器渗透插件,云存储检测、XSS、SQL 注入一站式 Web 安全测试工具
前端·sql·安全·web安全·网络安全·自动化·xss
AI备忘录1 天前
(十六)GRE/IPSec 隧道配置命令五厂商对照:华为 华三 锐捷 迈普 思科
运维·服务器·网络·网络协议·网络安全·华为
Eason_LYC2 天前
【GetShell】DataEase H2 JDBC远程命令执行漏洞(CVE-2025-32966+CVE-2025-49001)
网络安全·漏洞复现·dataease·白帽子·cve-2025-32966·cve-2025-49001·远程命令执行
白猫不黑2 天前
运维如何转安全(个人经验篇)
运维·学习·安全·web安全·网络安全·信息安全
Demons_kirit2 天前
PortSwigger网络缓存欺骗(4)
网络安全·缓存
白猫不黑2 天前
网络空间安全/信息安全专业学习规划(超级详细版)
运维·学习·安全·web安全·网络安全·信息安全
2601_966377132 天前
2026年教育数据安全研修班举办,数达安全发布密评工具箱与行业商用密码安全解决方案
网络安全·数据安全·2026年教育数据安全研修班