Найти тему
Интернет сегодня

CTF - Во что играют хакеры

Оглавление

"Разграничивай работу и хобби": твердят нам отовсюду, но что если работа приносит лишь наслаждение? Программисты в свободное время пишут игры, устраивают соревнования, ведут блоги о своей работе. Музыканты играют и сочиняют песни себе в удовольствие. Литературоведы и историки читают, художники рисуют и ищут вдохновение, математики с физиками думают над проблемами, а плотники, я уверен, собирают шкафы и прикручивают полки.

У хакеров тоже есть увлечения, например взлом сервера на скорость и наоборот, соревнования "у кого система безопаснее". Но в душу мне запало другое из развлечение.

Capture the flag

CTF или "захват флага" - интереснейшее соревнование между кибербезопасниками. Всего есть 3 вида соревнований: Attack-defense, King of the Hill и мой любимый Task-based.

В первом варианте каждой команде дают сервер. Задача взломать сервера врага и достать оттуда флаги. У кого больше флагов - тот и победил.

Второй вариант более интересный. Здесь сервер один на всех, в него тоже нужно приникнуть и залатать все дыры, чтобы ими не смогли воспользоваться другие команды. Царём горы становится тот, кто залез на самую вершину сервера, то есть получил полные права.

И третий вариант. Здесь на сайте вывешивают задания, за их выполнение можно получить флаг, побеждает команда с наибольшим количеством флагов.

-2

Task-based

Почему именно этот тип соревнований мой любимый? Просто потому что принять в нём участие может совершенно любой человек, даже вы и я. Конечно, просто так задания не решить, для этого необходимы профессиональные знания, но ведь никто не запрещает использовать гугл! А теперь поговорим о заданиях.

Все задания, или таски - как их принять называть - могут представлять из себя что угодно: файл без расширения, картинку, ссылку, архив, exe-шник. При этом, естественно, никто не будет говорить что нужно со всем этим делать. Например у картинки можно поменять канал, или перевести её в hex и вы получите флаг. Но обычно не всё так просто. В каждом таске особый метод шифрования.

Пример таска

Дан образ ROM для Nintendo Entertainment System с игрой Battletoads с подписью "Вот она — ваша уникальная возможность познакомиться с классикой и пройти ее до конца!", что намекает на то, что чтобы получить флаг нужно пройти игру до конца (Что довольно долго).

-3

Решение

Все диалоги в игре хранятся в сжатом виде и сжимаются алгоритмом Хоффмана, значит если их расшифровать, то мы сможем получить искомый флаг. Но если мы расшифруем их, то получим какую-то белиберду. Значит в код шифрования были внесены изменения. Скачиваем образ настоящей игры и бинарно сравниваем его код с кодом игры из таска. Находим данные изменения:

-4

Погуглив что значат эти команды ассемблера можно понять, что перед шифровкой к каждому байту применяется xor с байтом 0x1F. Применив эту операцию к нашему тексту получим текст всех диалогов в игре.

В глаза бросается фрагмент из финального монолога главного злодея:

I LOST! THIS CAN’T BE! I’M CC!THERE-ARE-NO-HARD-GAMES-FOR-NES! А DARK IS STRONGER THAN LIGHT! GRRRR!

А именно часть CC!THERE-ARE-NO-HARD-GAMES-FOR-NES!

Заменяем ! на {} и получаем флаг

CC{THERE-ARE-NO-HARD-GAMES-FOR-NES}

Всё просто!

Как бы не так, подумали вы. Но, на самом деле, даже если вы ничего не решите (как было на моём первом захвате), то всё равно получите интересный опыт и станете чуточку ближе к умению думать нестандартно.

Итоги

Всем программистам настоятельно рекомендую поучаствовать хотя бы в одном подобном соревновании. Да и не только программистам, многие соревнования достаточно просты и для обычных людей.

Всем добра!

#хакинг #программирование #интернет