Разработка задания для командной игры «Capture the flag»
Задача данной работы – разработать уникальный таск для игры CTF. Общая идея предполагает следующий механизм работы таска. Команде предлагается скачать архив, в котором содержится проект на языке Python и текстовый документ с зашифрованным сообщением. В карточке таска указанно сообщение (Рисунок 1): «Один из сотрудников ушел с работы на обед, поесть салат Цезарь с курочкой, и не сдал свой 16-ый проект за день. На звонки не отвечает и какие-то странные гудки. Я записал их для тебя −−••• −−−••• −••••− •−−−− •−−−− −−−••• ••−−− •−−−− ••••• −−−−− −−−−− ••••− ••••• •••−− •−−−− ••••− −−−−− •−−−− •−−−− ••••− −•••• •−−−− −•••• ••−−−»
Методология решения
Текст карточки таска На данном этапе проверяется внимательность команды и знания о криптографии, а конкретно об азбуке Морзе. В тексте карточки таска указано несколько подсказок к решению задачи, такие как «поесть салат цезарь», указывающая на метод шифрования текста, цифра проекта «16», указывающая на сдвиг шифра Цезаря, а также закодированное в азбуке Морзе сообщение. Конвертировав сообщение из азбуки Морзе в цифры, получаем «7:-1 1:2 150 04 53 140 11 46 162», данные цифры необходимы для дальнейшего решения таска.
Код Python
Следующим шагом проверяется знание команд языка программирования Python и умение проанализировать и сопоставить входные данные для решения задачи. Скачав и разархивировав архив, команда получает доступ в двум файлам. В одном из них находится проект на языке программирования Python (Рисунок 2), во втором находится зашифрованное сообщение (Рисунок 3)
Для получения промежуточного ответа необходимо использовать цифры, полученные при конвертировании азбуки Морзе «7:-1 1:2 150 04 53 140 11 46 162». Разбив цифры по парам и поместив их в квадратные скобки, получаем срезы «[7][:1][1][:2][15][0][0][4][5][3][14][0][1][1][4][6][16][2]», они являются положением необходимых символов в текстовом документе для получения промежуточного ответа. Для вывода в консоль, необходимо добавить список, из которого будет получен промежуточный ответ. «out[7][:-1],out[1][:2],out[15][0],out[0][4],out[5][3],out[14][0],out[1][1],out[4][6],out[16][2]».
В консоль будет выведенно сообщение «piieyr{Y_Belu_Fo}», это флаг, зашифрованный шифром Цезаря со сдвигом 16. Расшифровав шифр Цезаря, получаем флаг к таску:
«zssoib{I_Love_Py}»
В данной работе был разработан таск на тему «миск» для командной игры «Capture the Flag». Задание подойдёт для игр между командами внутри академической группы или академического потока для тренировки используемых тем. В таске задействованы две тематики: PPS и криптография. Общая сумма баллов за задание – 300.