Разбор одного из реверсов с недавно прошедшей YauzaCTF.
Перед нами бинарь, при запуске жалующийся на радиацию:
Ну что же, попробуем найти этот бит и поменять его обратно, чтобы получить флаг. Ну или просто хотя бы получить флаг. Вскрываем(ся).
Для начала, посмотрим что там у нас вообще творится:
Глядя на выхлоп дизассемблера, последнее чего хочется — ковырять его. Но секундочку, у нас же делается printf(flag)
! Значит, где-то этот флаг генерируется и валяется в памяти. Значит, можно просто сдампить память процесса во время работы и получить флаг. Закрываем радар, открываем дебаггер, ставим брейк на printf
и запускаем.
Заметка из будущего. Это было время, когда я был молод и использовал радар исключительно как дизассемблер. Аж слезу пустил
Спустя некоторое количество брейков начинается очень черная магия:
Ага. Кажется, мы на верном пути! Спустя еще некоторое количество брейков мы просто видим нужный нам флаг в стеке.
Таким образом, мы получаем флаг YauzaCTF{m0vfu5c470r_15_c0000l}
Всем удачи на стфках, да прибудет с вами сила!