HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Песочница
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 29.01.2011, 06:18
je0n
Постоянный
Регистрация: 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 Слепую инъекцию вроде бы уже провел... ВРОДЕ БЫ... Но хочу обычную!
 
Ответить с цитированием

  #2  
Старый 29.01.2011, 17:26
Seravin
Участник форума
Регистрация: 25.11.2009
Сообщений: 201
Провел на форуме:
866555

Репутация: 226
По умолчанию

а если не url.ru/index.php?search='-- а вот так url.ru/index.php?search=%'+--+

ошибку покажи
 
Ответить с цитированием

  #3  
Старый 30.01.2011, 14:17
je0n
Постоянный
Регистрация: 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 столбцов.
 
Ответить с цитированием

  #4  
Старый 30.01.2011, 15:10
Seravin
Участник форума
Регистрация: 25.11.2009
Сообщений: 201
Провел на форуме:
866555

Репутация: 226
По умолчанию

url.ru/index.php?search=%'+--+)

а в коде перед return $tab; напиши echo mysql_error(); и напиши какую ошибку выдаст
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.