Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

25.08.2007, 08:14
|
|
Новичок
Регистрация: 06.10.2006
Сообщений: 11
Провел на форуме: 22670
Репутация:
5
|
|
mysql inj
PHP код:
$qry = "SELECT c.id, c.name, COUNT(q.question) total
FROM {$TBL['category']} c
LEFT JOIN {$TBL['question']} q
ON c.id = q.category_id
WHERE c.parent_id=$parentId <=========
$filter
GROUP BY c.id, c.name
ORDER BY c.rank, c.name";
$rsl = mysql_query($qry) or die(mysql_error());
кто как думает.. возможна ли тут mysql inj если параметр $parentId не фильтруется ???
на всякий случай кидаю запрос который получается и ответ на него
SELECT c.id, c.name, COUNT(q.question) total
FROM odfaq_category c
LEFT JOIN odfaq_question q
ON c.id = q.category_id
WHERE c.parent_id=9999 union select 1,2,3/*
AND (IFNULL(c.active, 'Y') = 'Y'
AND IFNULL(q.active, 'Y') = 'Y')
GROUP BY c.id, c.name
ORDER BY c.rank, c.name
Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
|
|
|

25.08.2007, 09:58
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
Возможен, смотря как фильтруеться...
|
|
|

25.08.2007, 13:36
|
|
Новичок
Регистрация: 06.10.2006
Сообщений: 11
Провел на форуме: 22670
Репутация:
5
|
|
ну там magic_quotes = on
и
if (!($parentId > 0)) die;
т.е. в начале запроса всегда должна быть цифра .. к примеру 9999 union select 1,2,3/*
только вот если подставить 9999 union select 1,2,3/* - получается ошибка
Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
|
|
|

25.08.2007, 14:07
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 228
Провел на форуме: 4325663
Репутация:
240
|
|
2 cash
http://bugs.mysql.com/bug.php?id=29421
2 j0ze
Добавив union select 1,2,3/*, ты закоментировал символами /* оставшуюся часть запроса
PHP код:
AND (IFNULL(c.active, 'Y') = 'Y'
AND IFNULL(q.active, 'Y') = 'Y')
GROUP BY c.id, c.name
ORDER BY c.rank, c.name
А в любом справочнике написано, что Sql не позволяет использовать агрегирующие функции (count, min, max) в запросе с выводом более одного поля без групировки (group by), отсюда и ошибка. Так что извини парень, скуля здесь не прокатит.
|
|
|

25.08.2007, 14:42
|
|
Познавший АНТИЧАТ
Регистрация: 02.05.2006
Сообщений: 1,191
Провел на форуме: 7364332
Репутация:
1276
|
|
Сообщение от The_HuliGun
[b]А в любом справочнике написано, что Sql не позволяет использовать агрегирующие функции (count, min, max) в запросе с выводом более одного поля без групировки (group by), отсюда и ошибка. Так что извини парень, скуля здесь не прокатит.
Не знаю не проверял, а кто мешает в UNION поставить group by...
|
|
|

25.08.2007, 14:47
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
Попробуй не 9999 а существующие значение.
ИМХО Данная функция считает общее кол-во и ставит рамки на min() и max() и в итоге должна получиться слепая иньекция.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|