PXkod - Программирование и Безопасность в сети...

Объявление

Друзья:


Уважаемые гости! Пожалуйста регистрируйтесь.
Внимание! Некоторые форумы/разделы открываются только после регистрации.



>Правила форума<

>Набор модераторов!<

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PXkod - Программирование и Безопасность в сети... » Статьи по хакерству и безопасности » Пошаговае руководство по SQL Injection для новичков


Пошаговае руководство по SQL Injection для новичков

Сообщений 1 страница 3 из 3

1

Здравствуйте, уважаемые читатели. Перед вами пошаговае руководство по SQL Injection для новичков. Здесь я попытаюсь очень просто объяснить как украсть нужную нам информацию.
Эта статья является как бы итогом множества других статей, вопросов, ответов, практики итд итп. Написал я эту статью чтобы хоть как то облегчить труды новичков в нашем нелегком деле.
Итак, начнем.
----------------------
ОБНАРУЖЕНИЕ
----------------------
Предположим у нас есть цель взломать тот или иной сайт. Иными словами у нас есть жертва. Пусть это будет http://www.victim.com. Как узнать можно ли провести SQL Injection? Чтобы провести иньекцию надо сначала найти скрипт в котором есть нефильтруемая переменая. Предроложим на сайте есть скрипт news.php через который выводятся, например новости. Предположим у нас есть ссылка на "Новость #1", и ссылка эта такого вида:
http://www.victim.com/news.php?id=1.
Есть также ссылка на "Новость #2" имеющяя сылку вида:
http://www.victim.com/news.php?id=2.

Признак возможности провести по SQL Injection номер 1:
В адресной строке вместо этого адреса
http://www.victim.com/news.php?id=1
вот этот wwwvictim.com/news.php?id=1' .
Если на экран выводится сообщение об ошибке такого:
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 ndate DESC LIMIT 0, 5' at line 1
или такого вида*:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/merlin/data/www/www.merlin-worlds.ru/news/news.php on line 569
то SQL Injection возможна.

Признак возможности провести по SQL Injection номер 2:
Если содержимое
http://www.victim.com/news.php?id=1
то же что и у
http://www.victim.com/news.php?id=2-1
то SQL Injection возможна.

Из всего этого понятно что нефильтруемая переменая id и именно ей мы будем присваивать наши запросы.

---------
ПОЛЯ
---------
Для начала мы должны узнать количество полей в таблице и узнать значение какого поля высвечивается, чтобы потом через это поля выудить информацию.
Сделать это можно двумя способами.
Способ первый:
Банально перебирая количество полей, пока сообщение об ошибке не исчезнет. Пример:
http://www.victim.com/news.php?id=1+uni … +1,2,3,4/* и так далее.

Способ второй:
С помощью оператора ORDER BY, который формирует порядок сортировки полей по номеру (и не только), поля, т.е если выражение:
http://www.victim.com/news.php?id=1+order+by+5/*
не выдаст ошибку - это значит что в запросе используется как минимум 5 полей. Ввожу еще одно выражение:
http://www.victim.com/news.php?id=1+order+by+13/*
Это выражение выполнится с ошибкой, т.к. 13 -го поля не существует и теперь нам известно что полей в выражении не меньше 5 и не больше 12. Выбираю любое число из этого диапазона (примерно среднее):
http://www.victim.com/news.php?id=1+order+by+8/*
Ошибки нет, а это значит что количество полей находится в диапазоне от 8 до 12, Еще раз:
http://www.victim.com/news.php?id=1+order+by+10/*
Ошибка!. т.е количество полей или 8 или 9, остается только попробывать:
http://www.victim.com/news.php?id=1+order+by+9/*
Ошибки нет. Т.о. мы узнали что количество полей равно 9.
Получаем определенную информацию.
Т.к. мы знаем что у нас 9 полей мы можем составить работающее выражение:
http://www.victim.com/news.php?id=1+uni … 6,7,8,9/*.

Итак, мы узнали количество полей. Их 9. Предположим что высвечивается значения 1, 2 и 3 поля.

-----------
ИМЕНА
-----------
Чтобы вытянуть информацию нужно сначала узнать имена таблиц и полей.
Ну чтож, начнем.
Есть такая замечательная БД INFORMATION_SCHEMA и в ней есть замечательная таблица TABLES и в ней есть замечательные поля TABLE_SCHEMA и TABLE_NAME. Вот с их помощю мы и узнаем имена таблиц. Вот запрос:
http://www.victim.com/news.php?id=1+uni … ma.tables.
Теперь в нашем броузере отобрязятся все таблицы Базы Данных.
Остается узнать имена полей. Для этого набираем в адресной строке
http://www.victim.com/news.php?id=1+uni … a.columns.
Как можно увидеть мы поставляем имена полей вместой той цифры которая отображается на экране.
-----------
ПОСЛЕСЛОВИЕ
-----------
Также хотелось бы вам рассказать о двух вещях.
Первое:оператор LIMIT.
Если все проходит не так гладко как хотелось бы то в самом конце запроса мы добавляем LIMIT a,b что означает показать b записей начиная от а.
Второе:Коментарий /*.
Если и лимит не помог то попробуйте в самом конце запроса поставить символ комментария.
Вот собственно и все дорогие мои :)
-------------
БЛАГОДАРНОСТИ
-------------
Хотелось бы поблагодарить впервую очердь хакзону, потом всех авторов которые публикются на ней, потом всех новичков которые задают вопросы, и конечно всех кто отвечает этим вопросам. Именно благодаря вам была написана эта статья :)
Отдельная благодарность Warag a.k.a. EuGen за его терпеливость.
Warag a.k.a. EuGen я тя оч-оч уважаю и оч-оч благодарен за все :)
Ну и напоследок:
Статья не является побуждением к действию. Это только для ознакомительных целей. Автор не несет ответственности за действия которые были после прочтения данной статьи.

devil_i
hackzona.ru

0

2

Для осуществления необходимо знать основый sql,..

{Lio} написал(а):

Признак возможности провести по SQL Injection номер 1:В адресной строке вместо этого адреса http://www.victim.com/news.php?id=1 вот этот
            Если на экран выводится сообщение об ошибке такого:

а адрес то где.?=)
я так понимаю имелось виду news.php?id=1'

0

3

хм...да))) проглатывает почему-то эту ссылку=(

0


Вы здесь » PXkod - Программирование и Безопасность в сети... » Статьи по хакерству и безопасности » Пошаговае руководство по SQL Injection для новичков