Как взломать сайт?

Для начала определимся с тем, что данной статьей я ни в коем случае не призываю кого-либо взламывать чьи-либо интернет-ресурсы, используя описанные ниже методы.
Основная мета статьи – продемонстрировать пользователю значение темы защиты данных в Интернете на примере сайта, не защищенного должным образом…Для начала определимся с тем, что данной статьей я ни в коем случае не призываю кого-либо взламывать чьи-либо интернет-ресурсы, используя описанные ниже методы.
Основная мишень статьи – продемонстрировать пользователю достоинство темы защиты данных в Интернете на примере сайта, не защищенного должным образом. В качестве способа атаки на сайт будит использоваться, пожалуй, очень известный метод взлома сайта – SQL-инъекция.
Для начала определимся с тем, что все бес исключения современные объемные, сложные сайты строятся на основе базы данных. страда с данными, хранящимися в базе данных вашего сайта, осуществляется через структурного языка запросов SQL.
SQL-инъекция – техника внедрения в исходный SQL-запрос определенного кода (не нарушающего структуры самого запроса) с целью получения доступа к данным, содержащимся в БД.
Таким образом при определенных условиях, связанных, как правило, с отсутствием в коде и запросах сайта функций, направленных на защиту данных, взломщик может через SQL-инъекции прочитать содержание любых таблиц, а да удалить, изменить или же добавить данные, получить мочь чтения и/или записи локальных файлов и выполнения произвольных команд на атакуемом сервере. Не будем продолжительно удерживать на теории и перейдем к действиям.
Итак, для начала познакомимся с таким понятием, как передача данных методом GET. Не замечали ли вы, путешествуя по страничкам бесконечного Интернета, что ссылки, по которым вы путешествуете, часто имеют фасон типа:
www.хххххх.ru/index.php?что-то = чему-то&еще_что-то = еще_чему-то,
где на месте моих условных «что-то» и «чему-то» стоят всевозможные значения.
Так вот, знайте, что url, выглядящие подобным образом, содержат в себе определенную информацию, а именно: зa знаком вопроса следует прежде переменная (ее имя), а кроме = ее значение. намек & отделяет переменные наперсник от друга.
А делается это все только для того, что бы страница, к которой вы обращаетесь, могла изменяться в зависимости от этих переменных, то глотать их значения передаются тем самым методом GET в код страниц сайта, там эти значения обрабатываются, а на основе полученных результатов и получается наша веб-страница.
Но только вдумайтесь! Ведь ни один человек не может вам нельзя побеждать и вручную подправить сей url, исполнять его таким, как нуждаться вам, нажать опосля этого клавишу enter и отправить причина этого url-а на обработку серверу БД!! то есть здесь и возникает мочь внедрения SQL-инъекции.
Итак, начнем. Мы имеем сайт, что на основании параметра id, переданного методом GET, вынимает определенные причина из БД и формирует на их основе нашу страницу. Вот код этого SQL-запроса, кто обрабатывает наши причина из url-а:
$result3 = mysql_query(‘SELECT * FROM raspisanie WHERE cat=$id’).
Если перевести на русский язык, требование выполняет выборку всех данных из базы данных raspisanie, где арена cat=$id. По сути все, что в запросе соглашаться зa нашей переменной $id, которую мы передаем из url-а, нам уже не важно, и позже я поясню почему. нынче разберемся с самим url-ом. Пусть изначально он выглядит так:
www.хххххх.ru/index.php?id=3.
То поглощать мы передаем этим url-запросом параметр id=3, и страница формируется на основе этого параметра, вероятно он помещается в выше- SQL-запрос и получается, что из базы данных извлекаются все причина из таблицы raspisanie, где поляна cat=$id=3. А нынче перейдем к самому интересному. Допустим, мы знаем, что в базе данных атакуемого сайта в таблице users хранятся логин и отзыв от администраторской зоны сайта – в полях login и password соответственно. И тогда, просто изменив выше- url следующим образом:
www.хххххх.ru/index.php?id =3+union+select+1,2,login,password,5,6,7 +from+user/*
– страница поместит всю эту большую переменную в выше- запрос, какой довольно казаться как
$result3 = mysql_query(‘SELECT * FROM raspisanie WHERE cat=3 union select 1,2,login,password,5,6,7 from user/*’).
И, обработав такой новоиспеченный запрос, кто ни за какие благополучия не нарушает структуру таблиц БД, сервер самолично вернет нам, кроме обычной информации, соответствующей значению id=3, вторично и логин с паролем от сайта!
Чтобы было очень понятно, я переведу выше- новомодный «волшебный запрос»:
«Выбрать все причина из таблицы raspisaniе, где место cat=3, а да исполнять второй запрос: вывести, кроме полученных данных, значения логина и пароля из таблицы users».
Числа 1, 2 и т.д. являются произвольными и используются для сохранения структуры запроса, и количество таких значений определяется подбором — до тех пор, покамест наличность таких значений не довольно равным числу значений, которые выводятся из базы данных по умолчанию.
Имена таблицы users и значения полей для логина и пароля и определяются подбором, ведь согласитесь, всюду они имеют почти одинаковые названия. И, наконец, символы в конце нашего url-а «/*» служат для отбрасывания хвоста начального запроса в случае его присутствия, что бы он не нарушил структуру запроса внедренного.
Итак, мы наглядно, на примере успешного внедрения SQL-инъекции, ознакомились с одним из возможных способов взлома сайта.
Не пренебрегайте вопросами защиты информации своего сайта и спите спокойно!