Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Друзья, продолжаем публиковать решения нашего CTF-марафона! В нем было пять уровней сложности, в каждом по пять заданий — всего 25 заданий. Каждую неделю мы выкладываем по 5 решений — сегодня рассказываем о третьем уровне сложности. Предыдущие уровни вы можете изучить здесь: часть 1, часть 2.
Результаты марафона мы подвели в начале апреля, но задания все еще доступны — и вы можете попробовать решить их для себя.
CTF-2023 от «Доктор Веб»: задания уровня Epic
1. Load me up
Таск проверяет понимание работы ассемблера и знания о байт-коде в целом. В задании дан шелл-код — открыв его байт-код в Hiew и выставив размер инструкций на x32, можно увидеть следующую картину:
Чтобы получить флаг, нужно прочитать ASM, взять дворды и с помощью xor поделить их на «ключи» в виде двордов рядом. Получаем флаг: “DrWeb{5h3ll_u53r_}”.
2. Dungeon Master
В задании дается небольшая текстовая игра на Linux:
Если ввести в качестве ответа рандомный набор символов, то игра заканчивается выдается один из вариантов ответа:
Для первого задания просто можно найти вшитый ответ плейн текстом, так что ищем его и вставляем:
Теперь нам уже надо найти два ключа, и в этот раз они не вшиты простым плейнтекстом в код.
Если ввести рандомный набор символов, игра дает такой ответ:
Так как сбрутить не получилось, нужно смотреть код После того как не получилось сбрутить идем и смотрим код, находим две функции подобного формата, обе из них расшифровывают ключи путем обычного xor с ключом “11111111”
Получаем два ключа: “0---open” и “door---0”:
Переходим на третий уровень:
Пытаемся что-то угадать и победить дракона:
Иногда, на рандоме что-то даже получается, но только на рандоме:
Проанализировав код, можно понять принцип, по которому работает эта битва:
Оказывается, битва с драконом — последний уровень, и правильные результаты сразу пойдут во флаг:
Флаг формируется по такому принципу: DrWeb{[A-H][P-Z][#$%&][a-h][p-z]}.
Формируем флаг: “DrWeb{AH#er}”. У каждого участника он может быть разным.
3. The essence of art is DrWeb!
Совсем не сложное задание, если знать, что тут можно сделать.