Введение в CTF

Полный туториал

Основы

task-based ctf (jeopardy) — игрокам предоставляется набор заданий (тасков), к которым требуется найти ответ. Ответом является флаг — набор символов или произвольная фраза. Каждое задание оценивается различным количеством очков, в зависимости от сложности. Обычно выделяются следующие категории:

  • admin - задачи на администрирование.
  • joy - различные развлекательные задачи вроде коллективной фотографии или мини-игры.
  • ctb - задачи на аудит удалённых машин (crack the box).
  • reverse - исследование программ без исходного кода (реверс-инжиниринг).
  • stegano - стеганография.
  • ppc - задачи на программирование (professional programming and coding).
  • crypto - криптография.
  • web - задачи на веб-уязвимости, такие как SQL injection, XSS и другие.
  • forensics - одна из сложных категорий заданий, сравнимая с PWN.

Рекомендации

  • Обращайте внимание на текст задания, название, адрес. Там могут быть подсказки.

  • Активно используйте интеренет, некоторые таски специально сделаны с расчетом на это.

    • Гуглите все, что вам кажется подсказкой.
  • Начинайте анализ таска с классических для этой категории способов.

Описание категорий и способы решения

admin

  • Обычно задания, связанные с работой сисадмина: восстановление данных, виртуальные машины и т.д. Скорее всего, вам нужно будет просто погуглить, как делается та или инная вещь.

Joy

  • Обычно какая-то игра, в которой нужно найти флаг. Например, пройти карту в какой-нибудь Half-Life.

Reverse

  • Достаточно сложная категория. Обычно приходится дизассемблерировать, затем редактровать код на ассемблере.
  • Но бывают и более простые задания. Сперва следует обратить внимание на формат файла, что он из себя представляет. Затем открыть бинарник в текстовом редакторе и пробежать по нему глазами в поисках чего-то интересного. В этом может помочь перевод в hex. В vim это делается командой :%!xxd, обратно: :%!xxd -r.

Stegano

  • Стеганография - это наука о скрытой передаче информации путём сохранения в тайне самого факта передачи.
  • Чаще всего вам дается изображения в котором скрыт флаг. В самом простом случае он находится на картинке, но его не видно. Тут можно либо пробежаться по каналам, либо сделать XOR с оригинальным изображением, если оно есть. Программа для этого указана ниже .
  • В более сложных случаях в изображении зашит не просто флаг, а какая-то другая информация, которую нужно дальше преобразовать в него.
  • Первым делом при решении открываем Stegsolve (см. здесь).
  • Так же есть стега с аудио-файлами, такие задания достаточно сложные.

PPC

  • Это категория должна вам понравиться! Ничего искать не надо, просто напишите программу для автоматизации ваших действий.
  • Обычно эти таски решаются на python, так как это самый удобный язык для прототипирования.
  • Если вам необходимо делать POST и GET запросы используйте встроенную библиотеку requests в python. Если вам нужно куда-то подключаться используйте сокеты.

Crypto

  • Ознакомьтесь с базовыми алгоритмами шифрования тут. Поймите, какой подходит вам. Это пригодится!
  • Так же бывают таски с эзотерическими языкми. Погуглите этот язык и перевидите программу на нормальный для дальнейшего решения.
  • Если вам дан код программы и выходные данные, просто разберитесь в коде и напишите декодер.

Web

  • Внимательно осмотрите весь html код.
  • Обратите внимание, какие cookie передаются.
  • Посмотрите, что происходит при работе с сайтом: что отправляется и что примается. Используйте встроенный в браузер отладчик.
  • Проверьте сайт на наличие известных папок. Например, /phpmyadmin или /admin.
  • Проверьте сайт на наличие sql-injection.
  • Если вам необходимо отправить POST запрос с вашими параметрами или cookies, будет удобно использовать библиотеку requests в python.

Forensics

  • Каких-либо универсальных методов решения тасков категории forensic нет. Никогда не знаешь, что тебе за инцидент попадется и как с ним справляться.

  • Чаще всего таски решаются использованием binwalk.

    • Получить подробную информацию о содержании файла и распаковать все, что внутри: binwalk -e file.
  • Ознакомьтесь.