Райтап на задачу «Канарейка»
6

PWN
Задача «Канарейка»
Первый шаг: давай прочитаем условие самого таска и выделим важное: бэкенд на плюсах, ошибка с переполнением, защита на перезапись стека, канарейка (само название).
Если вы раньше не встречались с PWN, то первым делом стоит открыть гугл и вбить в поиск то, что нам дано “канарейка кибербезопасность” “защита на перезапись стека канарейка”. Самый первый сайт, который у нас показывается после запроса, — статья на Хабре про Stack Canary — https://habr.com/ru/companies/ua-hosting/articles/416047/ (прочитайте эту статью (лекцию) после выполнения задания, если захотите узнать больше информации о канарейке). Всё, что нужно для выполнения этого таска, я расписал =)
Раньше шахтёры спускались в угольные шахты с клеткой, в которой сидела канарейка. Эти птицы очень чувствительны к метану и угарному газу. Если канарейка затихала или погибала, для шахтёров это был самый понятный сигнал: «Здесь ядовитый газ, немедленно бегите, иначе погибнете сами!».
В компьютерной памяти канарейка выполняет точно такую же роль живого индикатора опасности.
Разбираемся, что же это такое. Stack Canary (научное определение) — это механизм защиты от переполнения буфера (Buffer Overflow) на уровне компилятора и операционной системы.
Простыми словами канарейка — это секретное проверочное число, которое программа прячет в памяти компьютера для защиты от хакеров.
Как оно работает?
Думаю, после моей проделанной работы в Paint всё стало понятно, думаю, пора приступать к самому таску)
Вспомним: чтобы убить канарейку, нам надо ввести большее количество символов, чем разрешено. Начинаем перебор: просто вводим любую букву много раз. Все попытки ввести оказывались неудачными и ничего необычного не происходило. Но, введя 32-ю букву, текст ошибки изменился с Wrong Flag : наши буквы на Wrong Flag: наши буквы7629b8ce.
Очень интересно: 31 символ буфер всё ещё принимает, а 32 — уже с какими-то лишними байтами, пробуем дальше.
Дальше наш запрос вообще перестало принимать, понимаем что предел нашей канарейки — 32 символа.
А после ввода 32-го символа эти байты и есть канарейка!
Пробуем ввести то, что нам выдала ошибка (наш текст с нашей канарейкой в буфер для флага)
Флаг получен!





