1.原理
双查询注入的原理主要有研究人员发现,一些聚合函数后面加上分组函数的时候,会把查询的一部分以错误的形式显现出来。
具体来说应该是主键冲突,比如这个:
2.常用的函数或者语句
A: rand()返回0到1的随机值
B:floor()取整函数,向下取整
C:order by这个不用说吧。。
D:count()汇总函数,聚合函数还有AVG(),max(),min()和sum()。
3.用mysql模拟实例
这里环境是LAMP,搭了sqli-lab环境,然后就是选择security这个数据库。
这里返回结果是数据库名称加上1或者0,可以利用这个语句来判断大概有多少项。这里说一下,如果查询语句中包含子查询语句,往往需要圈起来,如果是直接函数就不用了。
判断如下:
可以用来判断表中有多少项。
然后我们加上order by,如下:
可以按照0,1来分组。
然后再上聚合函数count(*),试下:
暴数据库名字,再来暴版本:
可以看到数据库版本信息暴了。