如果这条语句添加from的话,就会返回表中的记录的条数,就是有多少条记录就会返回多少次的版本号,看图
这里还没有显示完!!
因此
1select concat((select version()),floor(rand()*2)) from mysql.user;
(这里我用的是mysql中的mysql数据库,user表有四条记录 )
(小编注:rand()函数是生成0-1之间的小数随机值,rand()*2是生成0-2之间的小数随机数,floor(rand()*2)就相当于生成0/1两个随机值)
Attention,这里显示的值是版本号加上rand()生成的,正确版本好是去掉后面的0或1
现在我们加上group by ,因为如果我们从from 某张表的话,可能里面就会有很多条记录,然后就可能生成随机值(据说是这样的,如果不是,还望告知)
这里用information_schema.tables来弄,因为他的记录够多 ,如前一条语句,你就可以知道啦
group by 一下多清爽啦
看语句中
1select concat((select version()),floor(rand()*2))a from information_schema.tables group by a;
这里加粗的a是把 as a 简写成 a 而已,说一下group by ,这个的作用就是把5.1.69-0ubuntu0.10.04.10 分为一组,5.1.69-0ubuntu0.10.04.11 的分为一组
(小编注:如果各位看官不知道这里是怎么回事,执行一下
1select concat((select version()),floor(rand()*2)) from information_schema.tables
就清楚了)
最后就来到这个count()函数了,这个函数妙用可以看一下下图
1select count(*),concat((select version()),floor(rand()*2))a from information_schema.tables group by a
看到了没有,返回了我们后面concat的内容啦
ERROR 1062 (23000): Duplicate entry ’15.1.69-0ubuntu0.10.04.1′ for key ‘group_key’,我们看看phpmyadmin下比较详细的报错:
说了这么多就为了这个而已!!
好了,给个小小demo(demo在本文最后)给你们,不过弄不出一个没有显示返回位的,所以就将就一下的
然后双注入查询是有固定公式的
1union select 1 from (select+count(*),concat(floor(rand(0)*2),( 注入爆数据语句))a from information_schema.tables group by a)b
这里将下面的demo设置数据库的一些参数之后,保存成yi.php,我们的演示就正式开始了
(责任编辑:)