limit注入的一种方式

1.介绍一下procedure analyse ?

procedure analyse()函数是MySQL内置的对MySQL字段值进行统计分析后给出建议的字段类型,这是MYSQL数据库用来提高性能的一种方式,可以优化表结构。

这种注入方式通常是用在用户输入的参数在limit之后的情况下,因为limit前面有order by的话,union select是执行不了的。

通常的语法是 select * from tables procedure analyse();

它通常会对表的某个字段进行检测并且提出建议。它含有两个参数, PROCEDURE ANALYSE([max_elements,[max_memory]])
max_elements:默认值为256,analyse查找每一列的不同值时所需要关注的最大不同值的数量,同时还会检测这个值的数据类型是否为ENUM,如果该列的不同值的数量超过了max_elements的值ENUM就不会作为建议优化的类型

max_memory:默认值为8192,analyse查找每一列所有不同值时可能分配的最大的内存数量

样例如下:

这么看貌似有点迷,换种形式查看一下

这个时候我们可以看到,使用procedure analyse()这个函数已经对于gh_user这张表的字段提出了优化建议。

当然,把它放在limit后面也是一样的效果

2.案例

这里碰到了一个案例,用户注入的SQL语句只出现在了limit后面,

limit处出现了注入

很显然,这是一个显错注入。

然后构造一下语句,

同样的还可以用时间盲注这个语句也是用extractvalue()去构造~

 

3.总结

发现问题,解决问题,明白问题的根源


One thought on “limit注入的一种方式

发表评论

电子邮件地址不会被公开。 必填项已用*标注