Pull to refresh

Comments 45

Мне кажется следовало бы упомянуть еще такой способ защиты, как использование prepared statements.
Причём упомянуть в первую очередь. Вообще несколько странно видеть, что люди до сих пор используют в PHP MySQL, когда есть MySQLi и PDO.
Увы не все вольны выбирать технологии с которыми приходится работать. Но раз речь пошла о статье — упомянуть нужно было.
Статья интересная, но еще интереснее она была бы если б разбор полетов проходил на реальном сайте.
Разумеется, немного подождать пока админ этого сайта залатает дырку.
сайт брался тестовый для примера и на локальном хосте
за реальный можно и в тюрьму попасть
Ну так вы ничего противозаконного и не показывали. Нашлась дырка, о ней админу сообщается. Он ее правит. И волки целы и овцы сыты :)
Ну за такое
test.ru/?detail=4+UNION+SELECT+*+FROM+news+WHERE+id=4

не думаю, что могут посадить
вы так торопитесь выразить своё мнение, что пропускаете важный текст «если б разбор полетов проходил на реальном сайте»
Если даже и на реальном, что в этом плохого? Есть такая статья?
За конкатенацию для подстановки значений в запрос еще в универе били по пальцам (и правильно делали). Используйте параметризованные запросы, и будет вам счастье.
хороший у вас универ был, что такие тонкости пальцеломом присекал
поддерживаю, мне что-то больше попадается не опытных фрилансеров, которые даже понятия «конкатенация» незнают.
Ну я бы не сказал, что это тонкость :)
ну в стиле преподавания в универе: выдать инфу по взаимодействию php с mysql, а уже подробности — изучайте сами. Не заостряют внимание на этом, да и далеко не каждый студент потом становится веб-прогером
Не соглашусь. Стиль преподавания в универе — дать теоретическую базу («научить учиться»), а php и иже с ним уже давать в качестве ознакомительных спецкурсов. Если база есть — освоить его и смежные технологии не составит большого труда.
так суть в том, что и ваши слова не противоречат моему первому ответу тред-стартеру
Неужели сотни одинаковых статей на античатах и в журнале хакер и даже тут не достаточно и нужно мусолить и мусолить одно и тоже?
Ну серьёзно — что нового вы рассказали?
Мало того, автор еще и не до конца раскрыл тему.
Задача была рассказать, показать пример, разобрать пример.
В будущем что-нибудь ещё более подробно разберём.
Если хотите, можете написать свою статью с детальным (!) разбором примеров.

Кстати, насчёт одинаковых статей. Да, вы правы, на моей домашней странице тоже есть эта же статья. Насчёт античата и прочего — я не читаю статьи о чём-то предметном без наличия скриншотов, фотографий и других картинок.
Разберите переполнение буффера в прикладном ПО и, как следствие, выполнение произвольных команд на целевой системе.
Спасибо за идею. Действительно это очень интересная тема.
кстати, не всегда они и нужны, эти скрины :) думаю тру-линуксоиды поддержат
Про статью промолчу, ибо фу.
я не читаю статьи о чём-то предметном без наличия скриншотов, фотографий и других картинок.
мне вас жаль +)
' or '1'='1?
Или можно идти за чем-то более интересным? :]
более). Еще раз говорю там нет базы. Админка есть, но зашифрована.
Это просто полигон для отработки и проверки знаний для приема в команду
думаю можно было и не комментить)

Копаем саму админку. Думал хватит в куках что-нибудь типа «is_admin=1», а нифига
Ну ты близко, осталось совсем чуть чуть, найти пароль
Ну дальше там легко, алгоритм и все файлы даны. Не интересно :)
Угу я тоже так сначала подумал… а ушло на расшифровку около 2 недель
заразили же задачей.
Странно, что контрольная сумма от значений полного перебора перестановок первых 16 символов ключа не равна нужной сумме.
О да, есть там такое) Вы очень быстро это поняли, у меня это заняло около 2 дней
даешь связанные переменные! и не парься. PreparedStatement для Java и CreateCommand в C#
ну а я вдовесок ещё 2 языка подкинул. Одно гугление выдаст тонны информации, но так ведь по теме
по-мойм такие «инъекции» сейчас даже школьники делать умеют, статьями этими весь интернет исписан. Правда должен заметить, что сайты с такими дырами встречаются часто, и я лично знаю людей, которые «программируют» вот так через анус.
Прячьте статью в черновики и дописывайте, в данной правке читать нечего.
простите, но статья для совсем начинающих PHP-разработчиков
есть возможность творить с БД (чаще всего это MySQL) что угодно

я бы так не сказал, если это MySQL, то можно лишь читать данные; при наличии привилегии file_priv у текущего пользователя возможно также чтение/запись данных в файловую систему. Добавлять, изменять или удалять информацию не получиться.
Далее пробуем передавать эти запросы серверу, т.е заходим на test.ru/?detail=1' или на test.ru/?detail=1".

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

это идеальный случай, ничего не сказано про Blind SQL-Injection.
Тут название таблицы с новостями (в нашем случае это news) бралось логическим перебором.

данный «вариант» взлома очень далек от практики, так как после обнаружения уязвимости атакующий обычно сначала проверяет количество столбцов, затем получает информацию о сервере из version(), user(), etc, также названия баз данных/таблиц, и наконец, собственно, извлекает информацию из БД.
Данный процесс называется экранизацией.

экранизируют романы, правильно — экранирование.
В некоторых конфигурациях PHP этот параметр (магические кавычки) включён, а в некоторых нет.

по умолчанию он всегда включен, а в последних версиях PHP этого параметра вообще нет. И это правильно, так как при разработке экранирование нужно делать самому.
Какие нфиг magic quotes? Этот гребанный костыль давно выпилили и поделом ему.

В топике надо было либо глубже раскрывать вопрос защиты, либо глубже раскрывать вопрос проникновения и поиска. Тот код, что приведён как пример, следует отправить на говнокод. А сам топик в текущей редакции — на свалку.
Хватит уже упоминать покойников а-ля mysql_*. Это, теоретически, полезно как экскурс в историю, вдруг придется ковырять-поддерживать такой вот код. Но не более. А вдруг неофиты прочитают и будут следовать как истине?
согласен. но я нигде и не упоминал, что она полностью и исчерпывающим образом описывает широкую тему защиты данных. естественно каждый из нас имеет свои фитчи по безопасности, которые старатся применять.

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

а вы тут понесли — «не так», «не полностью раскрыто» и.т.д. ясное дело — статья вводная, первая на хабре, абсолютно авторская.
$id=(int)$_GET['id_news'];

А я бы еще на isset проверил) А вобще, когда я пишу код, я просто не могу обойтись без простых функций вида: (самый примитив)
function _get($key=null,$default=null)
{
if(is_null($key)) return $_GET; //можно произвести какие-то действия
return isset($_GET[$key])? $_GET[$key]: $default; //а тут можно и фильтровать и всё, что угодно
}

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

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

Хочу предложить Вам в помощь сайт для проверки защиты вашего ресурса — по сути фриланс биржа для людей обладающих умением взлома. От вас требуется разместить проект, указать тип уязвимости и бюджет. Дальше просто — ждать предложения выполнить проект от экспертов взлома. Проект молодой и ждёт своих клиентов!

hackmysite.ru/
Sign up to leave a comment.

Articles