PDA

Просмотр полной версии : SQL-inject в Invision Power Board


1ten0.0net1
12.09.2006, 14:35
Странно, что до меня никто не задал подобный вопрос (наверное, все читают только русский bugtraq):

mySQL query error: SELECT * FROM ibf_sessions s WHERE s.running_time > 1158056188 ORDER BY running_time desc LIMIT -999,25

Насколько я знаю синтаксис union, он не катит после LIMIT. AND вроде тоже не подставить, так что тогда делать?

Все, придумал. Драбоать только надо. Кто поможет?
sort_key=click&st=(ascii(lower(substring(USER(),1,1)))%3E100),25

Кто подскажет - как в этом запросе найти разницу (во внешнем виде страницы) между запросом, возвращающим единицу, и возвращающим нуль.

Нашел разницу - строк на одну меньше. И все равно запрос не катит. Блин.

Вопрос снят, там фильтры.

edos
12.09.2006, 17:31
Вот и поговорил сам с собой ))

Utochka
12.09.2006, 18:39
гы )

1ten0.0net1
12.09.2006, 19:09
Вот и поговорил сам с собой ))
Жаль, что только я могу ответить себе что-нибудь кроме гы.

SladerNon
13.09.2006, 00:22
там фильтруется все кроме номеров. Буквы режуться :)

да и после Limit, Union не может работать, как все знают :), конечно если ты только не нарыл какой нить секретнейший новейший способ ))))))

LoFFi
13.09.2006, 00:28
че то я не понял

инъекция после limit.

Довольно части возможность SQL инъекции возникает внутри параметра, передающегося к limit. Это может быть номер страницы и тд и тп.

Практика показывает, что все вышесказанное может быть применено и в этом случае.

MySQL корректно реагирует на запросы типа:

Select ... limit 1,2 union select....

Select ... limit 1 union select....

Если необходимо чтобы первый подзапрос вернул пустой результат, необходимо искусственно задать большие смещения для первого запросы:

Select ... limit 99999,1 union select.... Либо, Select ... limit 1,0 union select....

LoFFi
13.09.2006, 00:46
попробуй ввести AES_DECRYPT(AES_ENCRYPT(-999,25/**/union/**/select/**/null/*,0x71),0x71)

SladerNon
13.09.2006, 00:53
я не имел ввиду, а не уточнил почему не будет в данном случае работать LIMIT :)

LoFFi


думал Вы заметите, что там ORDER BY, и вот по этому после LIMIT и не будет работать UNION :)

SladerNon
13.09.2006, 00:58
SELECT * FROM ibf_skin_templates limit 1,0 union select 1,1,1,1,1,1,1,converge_email FROM ibf_members_converge

да будет канать..

там вот такой запрос: SELECT * FROM ibf_sessions s WHERE s.running_time > 1158056188 ORDER BY running_time desc LIMIT 9,25

мы к нему, если бы даже смогли что нить добавить, то добавили бы: union select 1,1,1,1,1,1,1,converge_email FROM ibf_members_converge

то есть если всё в месте, то получили бы:

SELECT * FROM ibf_sessions s WHERE s.running_time > 1158056188 ORDER BY running_time desc LIMIT 9,25 union select 1,1,1,1,1,1,1,converge_email FROM ibf_members_converge/*

ну и в ответ получили бы Incorrect usage of UNION and ORDER BY

SladerNon
13.09.2006, 01:12
Вопрос снят, там фильтры.

Да даже если бы и фильтров не было, все ровно бы не работало :)

LoFFi
13.09.2006, 01:19
да, не заметил order by. короче забей на багу =)

1ten0.0net1
13.09.2006, 20:43
Да даже если бы и фильтров не было, все ровно бы не работало :)

Я имел ввиду - буквы режет.

SladerNon
14.09.2006, 15:36
1ten0.0net1

Я говорю про то, что работать не будет не из-за фильтров, а из-за того что там ORDER BY :)
Даже если бы буквы не резались, все ровно бы не работало!