 |

29.01.2011, 06:18
|
|
Постоянный
Регистрация: 14.05.2006
Сообщений: 334
Провел на форуме: 1543521
Репутация:
272
|
|
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]function[/COLOR][COLOR="#0000BB"]name[/COLOR][COLOR="#007700"](...)
{
[/COLOR][COLOR="#0000BB"]$search[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"];
if([/COLOR][COLOR="#0000BB"]JRequest[/COLOR][COLOR="#007700"]::[/COLOR][COLOR="#0000BB"]getVar[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'search'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'0'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'string'[/COLOR][COLOR="#007700"])!=[/COLOR][COLOR="#DD0000"]'0'[/COLOR][COLOR="#007700"]){
[/COLOR][COLOR="#0000BB"]$search[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]" AND CONCAT(i.name,i.intro_desc,i.description) LIKE '%"[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]JRequest[/COLOR][COLOR="#007700"]::[/COLOR][COLOR="#0000BB"]getVar[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'search'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'0'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'string'[/COLOR][COLOR="#007700"]).[/COLOR][COLOR="#DD0000"]"%' "[/COLOR][COLOR="#007700"];
}
[/COLOR][COLOR="#0000BB"]$query[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"(SELECT i.*, c.name AS c_name FROM #__table_items i, #__table_categories c WHERE i.cat_id = c.id AND i.date_exp > '"[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$date[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]].[/COLOR][COLOR="#DD0000"]"' AND i.published = 1 "[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$search[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$user_items[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]" ORDER BY i.special DESC, "[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$ord[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]")"[/COLOR][COLOR="#007700"];
[/COLOR][COLOR="#0000BB"]$tab[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$this[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]_getList[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$query[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$limitstart[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$limit[/COLOR][COLOR="#007700"]);
return[/COLOR][COLOR="#0000BB"]$tab[/COLOR][COLOR="#007700"];
}
[/COLOR][/COLOR]
Это кусок кода из комонента жумлы. Я плохо догоняю, как исполняется этот скуль запрос. Т.е. мне не ясно это: $tab = $this->_getList($query, $limitstart, $limit);
Все что накопал по этой процедуре (_getList()) - это то, что она делает запрос к БД и возвращает результат в массиве. Еще было написано, что она защишенная. Почему запрос $query в скобочках?
В данном коде инъекция, вроде бы работает, но очень странно. Если я инжектирую оставляя целостность запроса, то все работает! Если пытаюсь обрезать часть запроса - то уже ничего не работает.
Пример:
передаю через браузер такой параметр search:
Код:
url.ru/index.php?search='+or+i.name+like+'%jamie
Выводит все записи!
Этот запрос:
Код:
url.ru/index.php?search='+and+i.name+like+'%jamie
выводит только одну строку таблицы, в поле name которой есть слово jamie.
То есть инъекция какбэ прокатывает, а вот вывести нужные мне данные не могу, т.к. если делаю так:
Код:
url.ru/index.php?search='--
выдает ошибку, а по моему плану должно вывести все поля таблицы!
Я пологаю, что это функция getList что-то исполняет, но что понять не могу и в сети не смог найти описания, чтоже она конкретно делает.
Помогите провести инъекцию с выводом тех данных, что я хочу. Хотя бы слепую инъекцию, если это вообще возможно в данном примере
ADDED Слепую инъекцию вроде бы уже провел... ВРОДЕ БЫ... Но хочу обычную!
|
|
|

29.01.2011, 17:26
|
|
Участник форума
Регистрация: 25.11.2009
Сообщений: 201
Провел на форуме: 866555
Репутация:
226
|
|
а если не url.ru/index.php?search='-- а вот так url.ru/index.php?search=%'+--+
ошибку покажи
|
|
|

30.01.2011, 14:17
|
|
Постоянный
Регистрация: 14.05.2006
Сообщений: 334
Провел на форуме: 1543521
Репутация:
272
|
|
пробовал - не катит.
Ошибка, что-то в духе not suplied argument in foreach()...
короче ничего не выходит, мне кажется, из-за скобочек, в которые взят запрос:
Код:
$query = "(SELECT i.*, c.name AS c_name FROM #__table_items i, #__table_categories c WHERE i.cat_id = c.id AND i.date_exp > '".$date[0]."' AND i.published = 1 ".$search.$user_items." ORDER BY i.special DESC, ".$ord.")";
Все мои попытки по его обрезанию не удались. Короче, т.к. обрезать мне его удается, то я решил подстроется под него. Для слепой инъекции подстроится легко, и вот для обычной до сих не допру как! Не удается сделать синоним для таблицы под буквой i в запросе после union select(как в самом запросе). Когда просто запрос сую в пхпмайадмин говорит, что нет такого объекта как i.specials.
Мне кажется, что я просто плохо знаю праила mySQL и тупо не могу составить такой сложный запрос. Если кто сможет помочь с запросом, то там 20 столбцов.
|
|
|

30.01.2011, 15:10
|
|
Участник форума
Регистрация: 25.11.2009
Сообщений: 201
Провел на форуме: 866555
Репутация:
226
|
|
url.ru/index.php?search=%'+--+)
а в коде перед return $tab; напиши echo mysql_error(); и напиши какую ошибку выдаст
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|