目录
order by
orderr by 语句用于根据指定的列对结果集进行排序。排序方式默认为升序。如果想要将排序方式改为降序,可以使用desc关键字。
示例:某数据库有某表,不适用order by查询结果为:
当使用:select * from users order by id desc; 将id列通过order by进行降序排列时查询结果如下。
简单的注入判断
有时候,我们可以利用 order by 子句进行快速猜解表中的列数,再配合 union select 语句进行回显。下面采用sqllib-less5举例;
1、id=1' order by 3--+ //不报错
2、id=1' order by 4--+//报错
由上可以说明前面的字段数为3。还可以使用union select 进行回显。
limit
limit用法
select * 返回所有记录。
limit n 返回n条记录。
limit m,n 从m条记录开始返回n条记录。
LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1):
宽字节注入
宽字节就是两个以上的字节,宽字节注入产生的原因就是各种字符编码的不当操作,使得攻击者可以通过宽字节编码绕过SQL注入防御。
ASCII
编码:单字节编码
latin1
编码:单字节编码
gbk
编码:使用一字节和双字节编码,0x00-0x7F
范围内是一位,和 ASCII 保持一致。双字节的第一字节范围是0x81-0xFE
UTF-8
编码:使用一至四字节编码,0x00–0x7F
范围内是一位,和 ASCII 保持一致。其它字符用二至四个字节变长表示。
mysql在在使用GBK编码的时候,会认为两个字符是一个汉字(前提时前一个字符的ascii码要大于128,才到汉字范围)
' -> \' -> %5C%27
%df ' -> %df \' -> %df%5C%27 //将 %df%5C 拼接成一个汉字