Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   mysql inj (https://forum.antichat.xyz/showthread.php?t=47563)

j0ze 25.08.2007 08:14

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

guest3297 25.08.2007 09:58

Возможен, смотря как фильтруеться...

j0ze 25.08.2007 13:36

ну там 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

The_HuliGun 25.08.2007 14:07

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.idc.name
ORDER BY c
.rankc.name 

А в любом справочнике написано, что Sql не позволяет использовать агрегирующие функции (count, min, max) в запросе с выводом более одного поля без групировки (group by), отсюда и ошибка. Так что извини парень, скуля здесь не прокатит.

DIAgen 25.08.2007 14:42

Цитата:

Сообщение от The_HuliGun
[b]А в любом справочнике написано, что Sql не позволяет использовать агрегирующие функции (count, min, max) в запросе с выводом более одного поля без групировки (group by), отсюда и ошибка. Так что извини парень, скуля здесь не прокатит.

Не знаю не проверял, а кто мешает в UNION поставить group by...

guest3297 25.08.2007 14:47

Попробуй не 9999 а существующие значение.
ИМХО Данная функция считает общее кол-во и ставит рамки на min() и max() и в итоге должна получиться слепая иньекция.


Время: 03:08