order by 、limit 、宽字节注入

本文深入探讨了SQL注入中的OrderBy技巧,如何利用它来猜测表列数,以及Limit的使用方法,展示了如何限制查询返回的记录数。同时,宽字节注入的概念被引入,解释了其源于不同字符编码的不当处理,特别是MySQL在GBK编码下如何处理宽字节导致的安全问题。通过对这些技术的理解,读者可以更好地防范和应对SQL注入攻击。
摘要由CSDN通过智能技术生成

目录

order by

简单的注入判断

limit

limit用法

宽字节注入


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 拼接成一个汉字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值