/Разборы задач
31 октября 2026
Райтап на задачу «Прошлогодний флаг»
Разбор задачи «Прошлогодний флаг» от fderious: изучаем бинарник в Ghidra и получаем флаг POST-запросом.12
9

Reverse
Задача «Почувствуй радугу»
Больше хешей — надёжнее. Или нет?
Для начала выполняем базовые действия для определения дальнейшего решения:
file md5_flag_checker
chmod +x md5_flag_checker
./md5_flag_checkerПримерно поняли, что за зверь перед нами, поэтому открываем Ghidra и идём смотреть дизассемблированный код нашего ELF-файла. Не забываем прожать кнопку Analyze.
Далее сразу идём смотреть, что находится в функции main.
А там мы наблюдаем много строк с последовательностью символов, которые как-то обрабатываются.
В целом, по названию файла мы знаем, что нам предстоит работать с MD5-хешем, и несложно предположить, что обрабатываемые строки и являются хешем.
Проверим нашу гипотезу, крякнув первую строку. Это можно сделать, например, здесь.
Получаем существующий ответ — B, букву, являющуюся первой в флаге. Допроверим гипотезу и при проверке следующих хешей также получим буквы последовательности BugCTF.
Остаётся лишь скопировать все хеши из Ghidra и собрать флаг:
Задачу можно решить без использования веб-ресурсов полностью локально, например на Python:
import hashlib
CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_{}"
HASHES = """ """ # Скопируй сюда хэши из Ghidra по одному на каждую стркоу
HASHES = HASHES.splitlines()
flag = ""
for i in range(24):
curent_hash = HASHES[i]
for j in range(len(CHARS)):
current_char_hash = hashlib.md5(CHARS[j].encode()).hexdigest()
if curent_hash == current_char_hash:
flag += CHARS[j]
break
print(flag)Таск решён!