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关 '闭合的盲注或堆叠注入

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

相关推荐
菜根Sec13 小时前
Sqli-labs靶场搭建及报错处理
web安全·网络安全·渗透测试·sql注入·网络安全靶场
浩浩测试一下20 小时前
02高级语言逻辑结构到汇编语言之逻辑结构转换 if (...) {...} else {...} 结构
汇编·数据结构·数据库·redis·安全·网络安全·缓存
啥都想学点2 天前
Windows基础概略——第一阶段
网络安全
star010-2 天前
PeiQi网络安全知识文库PeiQi-WIKI-Book保姆式搭建部署教程
安全·web安全·网络安全
Whoami!3 天前
2-1〔O҉S҉C҉P҉ ◈ 研记〕❘ 漏洞扫描▸理论基础与NSE脚本
网络安全·信息安全·漏洞扫描·oscp
周某人姓周3 天前
防火墙双机热备部署
网络安全
七月花nancy4 天前
SQL注入攻击基础
网络安全
Bruce_Liuxiaowei4 天前
绕过文件上传漏洞并利用文件包含漏洞获取系统信息的技术分析
运维·网络安全·php·apache
Johny_Zhao6 天前
Rsync + Sersync 实时数据同步方案
linux·网络安全·信息安全·云计算·rsync·系统运维·sersync
Bruce_Liuxiaowei6 天前
.htaccess 文件上传漏洞绕过总结
windows·安全·网络安全·php·apache