Главная / Блог / Форматы CTF соревнований: Jeopardy vs Attack-Defense

15 мин.00

Форматы CTF соревнований: Jeopardy vs Attack-Defense

Форматы CTF соревнований: Jeopardy vs Attack-Defense

На моём первом Attack-Defense я потерял все флаги за 40 минут. Не потому что соперники оказались гениями — я просто не знал, что сервисы нужно патчить до того, как бросаться атаковать чужие vulnbox'ы. Пока я ковырял соседний веб-сервис через Burp Suite, три команды уже вытащили мои флаги через тривиальную SQL-инъекцию, которую я даже не открыл в исходниках. Нулевой скорборд и бессонная ночь над write-up'ами — вот цена неправильного выбора формата для первого соревнования.

После 20+ сыгранных capture the flag соревнований в обоих форматах и организации собственного CTF-джема на 30 человек я точно знаю: выбор между Jeopardy и Attack-Defense на старте — это разница между «втянулся» и «больше никогда».

Два формата CTF соревнований: почему выбор определяет всё

Capture the flag соревнования делятся на два принципиально разных формата: Jeopardy (он же Task-Based) и Attack-Defense. Есть экзотика вроде Belluminar (придуман POC SECURITY из Южной Кореи, впервые показан на POC2015) или Boot2Root (уязвимые виртуалки для самостоятельного взлома), но 95% событий на CTFtime — один из двух основных видов CTF для новичков. Подробнее — в нашем статье о создание ctf заданий.

Разница между ними не в сложности задач, а в модели стресса и темпе принятия решений. Jeopardy CTF — марафон: 24-48 часов, набор изолированных задач, можно встать за кофе и вернуться через час. Attack-Defense — спринт на 6-10 часов, где каждый тик (1-5 минут) кто-то ломает ваши сервисы, а вы должны одновременно атаковать и защищаться. Выбрать не тот формат для первого CTF соревнования — гарантированный способ разочароваться в дисциплине целиком.

Jeopardy CTF: категории задач и система подсчёта очков

Jeopardy — самый распространённый формат CTF соревнований и лучшая точка входа для тех, кто хочет начать участвовать в CTF. Организаторы публикуют набор задач (тасков), в каждом спрятан флаг — строка вроде flag{s0m3_s3cr3t}. Нашли флаг, вбили на платформе (чаще всего CTFd) — получили очки.

По данным cyber-edu.co, первый Jeopardy-формат был представлен на DEF CON в 2000 году. С тех пор он стал доминирующим: DEF CON CTF Qualifier 2020 собрал более 1300 команд со всего мира.

Категории задач CTF

Понимание категорий — основа подготовки к CTF соревнованию. Каждая бьёт по отдельному набору навыков:

Web — поиск и эксплуатация уязвимостей веб-приложений: SQL-инъекции, XSS, SSRF, IDOR. По данным OWASP Top 10 2021, Broken Access Control (A01:2021) обнаруживается в 94% протестированных приложений — именно такие баги чаще всего ложатся в основу web-тасков. В реальной работе это прямой аналог техники Exploit Public-Facing Application (T1190, Initial Access) по MITRE ATT&CK.

Pwn (Binary Exploitation) — pwn задания CTF требуют эксплуатации уязвимостей в скомпилированных программах: buffer overflow, format string, heap exploitation. Основной инструмент — pwntools (Python-библиотека). Категория, которая заставляет разбираться, как процессор на самом деле исполняет код — без этого понимания тут делать нечего.

Reverse — анализ программ без исходного кода. Ghidra, IDA и radare2 — рабочие лошадки категории.

Crypto — криптографические задачи от классического Caesar cipher до атак на RSA с малым экспонентом. Для быстрого декодирования — CyberChef, для глубокого погружения — CryptoPals.

Forensics — цифровая криминалистика: анализ дампов памяти, образов дисков, pcap-файлов в Wireshark. Частая задача — восстановить действия атакующего по сетевому трафику. По сути, детективная работа: вот тебе улики, собери картину.

Stegano — стеганография: поиск данных, скрытых в изображениях, аудио, видео. Типовой набор: exiftool для метаданных, steghide для JPEG, binwalk для вложенных файлов.

OSINT — разведка по открытым источникам: метаданные фотографий, публичные профили, базы данных утечек. Задача может звучать как «найдите город, где сделано это фото» — и дальше 40 минут в Google Maps, пока не узнаешь вывеску кафе на заднем плане.

Misc / Joy — всё, что не вписывается в другие категории: логические головоломки, задачи на скриптинг, иногда откровенный trolling от организаторов (и это бывает весело).

Формат позволяет выбирать порядок решения и фокусироваться на сильных сторонах. Не знаете pwn — берите web. Слабы в crypto — переключайтесь на forensics. Для тех, кто только пробует себя в CTF, эта гибкость критична.

Как работает подсчёт очков: static, decay и first blood

Русскоязычные гайды почти не раскрывают механику скоринга, а она напрямую влияет на стратегию. По данным emergentmind.com и ctf-wiki.org, основных моделей три:

Static scoring — каждый таск стоит фиксированное количество баллов (100, 200, 500). Просто и прозрачно, но не стимулирует скорость.

Dynamic / Time-decay scoring — стоимость задачи падает по мере того, как её решают другие команды. Формула бывает линейной или экспоненциальной. На практике: задача за 500 очков после 50 решений стоит уже 150. Тактический вывод — хватайте сложные задачи первыми, пока они дорогие. Некоторые платформы удерживают полную стоимость первые 2-4 часа, после чего включают decay.

First blood bonus — первые три команды, решившие задачу, получают дополнительные очки. В терминологии CTF: first blood, second blood, third blood. На крупных Jeopardy CTF (CSAW CTF, Plaid CTF) first blood даёт ощутимый рывок в таблице.

Есть и гибридные модели с rank-based множителями, где бонус рассчитывается геометрически по порядковому номеру решения. Знание конкретной модели скоринга на вашем соревновании меняет тактику: при decay-скоринге на старте берёте не то, что хорошо знаете, а то, что решат немногие.

Attack-Defense CTF: тики, vulnbox и война на два фронта

Attack-Defense — исторически первый формат capture the flag соревнований. Первый DEF CON CTF прошёл в 1996 году на четвёртой конференции DEF CON в Лас-Вегасе именно в этом формате. В России движение Attack-Defense стартовало с UralCTF в 2006 году в Екатеринбурге, организованного командой HackerDom. Участвовали тогда всего две команды, а флаги принимались вручную — никакой автоматизации ещё не существовало.

Тики и игровая сеть в Attack-Defense

Каждая команда получает идентичный сервер — vulnbox — с набором уязвимых сервисов. Все vulnbox'ы объединены в общую игровую сеть. Подключение обычно через VPN-конфигурацию (WireGuard) от организаторов.

Игра идёт 6-10 часов и разбита на раунды — тики. Один тик — от 1 до 5 минут. По данным maplebacon.org, для 8-часовой игры с 5-минутными тиками получается ~96 раундов. В каждом тике происходит:

  1. Gameserver (центральный сервер организаторов) размещает новые флаги в ваших сервисах.
  2. Вы атакуете сервисы других команд и забираете их флаги.
  3. Другие команды атакуют ваши сервисы.
  4. Чекеры проверяют работоспособность всех сервисов.

Три компонента начисления очков за каждый тик:

  • Attack Points — за каждый украденный у соперника флаг. Чем больше команд удалось обчистить — тем больше очков.
  • Defense Points — за сохранность ваших флагов. Если никто не взломал сервис — получаете защитные баллы.
  • SLA Points — за доступность и корректность работы ваших сервисов.

Сервис в Attack-Defense — прямой аналог таска в Jeopardy: программа с одной или несколькими уязвимостями. Сервисы могут быть веб-приложениями (Go/Python с исходным кодом), бинарниками для реверса или чем-то совсем нестандартным. На ENOWARS 8, например, был пиратский форум (pwn-категория, только бинарник без исходников), а на FAUST CTF 2024 — приложение для шеринга локации с API на Go.

SLA и чекеры: почему нельзя просто выключить сервис

Первая мысль новичка на Attack-Defense: «Выключу уязвимый сервис — никто не украдёт мои флаги». Логично? Логично. Но не сработает. Чекеры — автоматические скрипты организаторов — каждый тик проверяют, что сервис жив и ведёт себя корректно. Считайте их легитимным пользователем вашего сервиса.

Возможные статусы сервиса в каждом тике (по данным maplebacon.org и ctf-gameserver.org):

  • OK — всё работает штатно
  • DOWN — сервис недоступен, таймаут или обрыв соединения
  • FAULTY — сервис доступен, но ведёт себя некорректно
  • FLAG_NOT_FOUND — сервис работает, но чекер не нашёл размещённый флаг
  • RECOVERING — сервис восстанавливается после сбоя

Любой статус кроме OK — потеря SLA-очков. Задача — закрыть уязвимость, НЕ сломав функциональность. Это ядро инфраструктуры Attack-Defense и прямой аналог реальной работы: в проде тоже нельзя «просто выключить» уязвимый сервис, чтобы защититься. Заказчик вам спасибо не скажет.

Разница между Jeopardy и Attack-Defense: таблица для выбора первого CTF

Критерий Jeopardy CTF Attack-Defense CTF
Длительность 24-48 часов 6-10 часов
Формат Онлайн или офлайн Преимущественно офлайн
Можно играть соло Да Нет (минимум 3-4 человека)
Уровень стресса Средний, свободный темп Высокий, каждый тик на счету
Нужен свой сервер Нет Да (vulnbox от организаторов)
Ключевой навык Решение изолированных задач Multitasking: атака + защита + мониторинг
Подготовка Решать задачи на тренажёрах Скрипты автоматизации, работа с Docker
Порог входа Низкий Высокий
Связь с реальной ИБ Пентест, forensics, OSINT Incident response, hardening, SOC
Популярные примеры CSAW CTF, Plaid CTF, picoCTF DEF CON CTF, ENOWARS, FAUST CTF

Если только начинаете — стартуйте с Jeopardy. Это не «для слабых»: даже топовые команды, играющие финал DEF CON CTF (Attack-Defense), набирают состав и оттачивают навыки именно на Jeopardy-турнирах.

Первый час на Jeopardy CTF: пошаговый чек-лист

Этот чек-лист собран после 15+ соревнований и кучи набитых шишек. Работает как для онлайн CTF для начинающих, так и для офлайн-турниров.

Минуты 0-10: разведка доски задач. Откройте полный список тасков. Не хватайте первый попавшийся — это ошибка, которую я совершал раз пять. Отсортируйте по категориям и найдите свою сильную сторону. Посмотрите на стоимость: если скоринг динамический — задачи за 500 очков через час превратятся в 200. Решайте дорогие первыми.

Минуты 10-20: low-hanging fruit. Возьмите 1-2 самые дешёвые задачи из знакомой категории. Misc и OSINT часто содержат таски на 5-10 минут. На web-тасках первым делом проверяйте robots.txt — флаги или подсказки часто валяются именно там. Быстрые решения разогревают и дают психологическую уверенность.

Минуты 20-60: фокусная работа. Выберите одну задачу среднего уровня из сильной категории. Если застряли дольше 20 минут — переключайтесь, не сжигайте первый час на один таск. Записывайте ход решения: это будущий CTF write-up и учебный материал.

Типичные ошибки: не читать описание задачи целиком (подсказки в тексте бывают жирными), работать без заметок (через три часа не вспомните, что пробовали), пытаться решить всё в одиночку при наличии команды.

Первый час на Attack-Defense: пошаговый чек-лист

Attack-Defense — принципиально другой зверь. Здесь первый час определяет результат всей игры.

Минуты 0-15: оборона. Подключитесь к vulnbox через VPN. Проверьте SSH-доступ. Если организаторы используют Docker Compose (ENOWARS и FAUST CTF обычно так делают), docker ps покажет запущенные контейнеры с сервисами. Сделайте бэкап текущего состояния — один неудачный патч может поломать сервис, чекер поставит FAULTY, и придётся откатываться. Я на втором Attack-Defense потерял 20 минут на восстановление после кривого патча, потому что не сделал бэкап. Не повторяйте.

Минуты 15-30: поиск уязвимостей в своих сервисах. Читайте исходный код (если дан) или реверсите бинарник. Ищите инъекции (Injection — A03:2021 по OWASP), hardcoded credentials (аналог техники Credentials In Files, T1552.001 по MITRE ATT&CK), path traversal. Каждая найденная уязвимость — это эксплойт, который работает и против всех соперников: серверы-то идентичны.

Минуты 30-60: патч + атака. Закройте самые очевидные дыры. Проверьте, что чекер по-прежнему возвращает OK. Затем напишите эксплойт и запустите его против всех соперников одновременно через скрипт-thrower:

import requests

TEAMS = ["10.60.1.1", "10.60.2.1", "10.60.3.1"]
PORT = 8080

for ip in TEAMS:
    try:
        r = requests.get(f"http://{ip}:{PORT}/api/notes",
                         params={"id": "' UNION SELECT flag FROM secrets--"},
                         timeout=3)
        if "flag{" in r.text:
            print(f"[+] Flag from {ip}: {r.text}")
    except Exception as e:
        print(f"[-] {ip}: {e}")

Это демонстрация концепции — на реальном соревновании эксплойт будет сложнее, но структура та же: цикл по IP-адресам команд, отправка payload, парсинг флага, сабмит на gameserver.

Критическая ошибка (и именно она стоила мне первого Attack-Defense): бросаться атаковать, не закрыв свои дыры. За 30 минут, пока вы пишете эксплойт, пять команд уже утащили ваши флаги через ту же самую уязвимость.

Как найти онлайн CTF для начинающих через CTFtime

CTFtime.org — главный агрегатор capture the flag соревнований в мире. Анонсы, результаты, CTFtime рейтинг команд, архивы задач — всё в одном месте.

На что смотреть в CTFtime рейтинге

Weight (вес) соревнования — число от 0 до 100, отражающее престижность и сложность. Для первого раза ищите CTF с weight 0-25. Всё, что выше 50 — уровень DEF CON Quals, HITCON и аналогичных топовых событий, туда рано.

Format — фильтруйте по «Jeopardy» для старта. Attack-Defense без подготовленной команды из 4-5 человек — потеря времени.

Duration — для первого CTF оптимальны 24-48 часов. За 6-часовой турнир новичок не успеет войти в ритм.

Рекомендованные платформы для подготовки к CTF:

  • picoCTF — от Carnegie Mellon University. Задачи с пошаговым вводом, идеальный стартовый уровень. Если вообще не понимаете, с чего начать — начинайте отсюда.
  • Hack The Box — тренажёр для пентестеров с CTF-компонентой и ранжированием по уровням.
  • OverTheWire (Bandit, Natas) — серия тренажёров, которая закрывает базу по Linux, web, crypto. Bandit — вообще первое, что стоит пройти, если с Linux на «вы».
  • Root Me — задачи по всем основным категориям CTF.
  • CryptoPals — практический курс по криптографии для уверенности в crypto-тасках.

Для тех, кто в России — ctfnews.ru собирает календарь отечественных соревнований. Российское CTF-сообщество выросло из UralCTF/RuCTF (первые межвузовские турниры по международным правилам прошли в 2007-2008 годах) и сегодня включает школьные, студенческие, корпоративные и международные турниры. В 2009 году RuCTFE собрал 43 команды из разных стран — на тот момент первое международное CTF-событие в России.

На HackerLab.pro есть задачи по 12 категориям (web, pwn, forensics, crypto и другие), которые подходят для регулярной тренировки между соревнованиями. Нужна регистрация, после неё доступны таски всех уровней сложности.

CTF команда для новичков: минимальный состав и роли

Для Jeopardy CTF формально можно играть соло. Но даже на первом соревновании команда из 2-3 человек даёт преимущество: пока один застрял на web, второй закрывает crypto.

Для Attack-Defense минимальный жизнеспособный состав — 4 человека:

Роль Задача Инструменты
Defender / Patcher Ищет уязвимости в своих сервисах, патчит Исходный код, Ghidra, grep
Attacker Пишет эксплойты и thrower'ы pwntools, Burp Suite, Python
Traffic Analyst Мониторит сетевой трафик tcpdump, Wireshark, tshark
Infra / Automation Поддерживает инфраструктуру, автоматизирует сабмит флагов Docker, bash, Python

На практике роли пересекаются. Traffic analyst ловит в pcap-дампах чужие эксплойты и передаёт их атакеру для повторного использования — traffic replay легальная и очень эффективная тактика. Defender, закрыв уязвимость, передаёт описание атакеру, который тут же пишет эксплойт для чужих серверов. Конвейер, где каждый знает свой участок.

Где искать CTF команду для новичков: - Тематические чаты в Telegram (CTF.Moscow, RuCTF) - Университетские CTF-клубы - Форумы codeby.net - Прямо на CTFtime — у многих команд открытый набор

Не ждите идеального состава. На моём первом Jeopardy нас было трое: я, парень с forensics-бэкграундом и студент со знанием Python. Мы заняли 120-е место из 400 команд — и разобрали потом каждый нерешённый таск по CTF write-up'ам. Через три месяца тот же состав вошёл в топ-50.

Подготовка к CTF соревнованию: минимальный набор инструментов

Не нужно ставить 50 утилит заранее. Вот рабочий минимум, который закроет 80% задач:

Категория Инструмент Зачем
Web Burp Suite Community Перехват HTTP-запросов, тестирование инъекций
Pwn pwntools (Python) Написание эксплойтов для бинарных задач
Reverse Ghidra Декомпиляция и анализ бинарников
Crypto CyberChef Декодирование, конвертация, анализ шифров
Forensics Wireshark Анализ pcap-файлов и сетевого трафика
Stegano exiftool, binwalk Метаданные и скрытые данные в файлах
Общее Kali Linux (VM) Предустановленный набор ИБ-инструментов

Kali ставьте в виртуальную машину (VirtualBox или VMware), не на основную систему. На соревнованиях вы будете скачивать подозрительные файлы и запускать чужой код — изоляция обязательна. Потренировавшись на кошках, можете потом собрать свой набор под конкретные категории.

CTF write-up как главный инструмент роста

Секрет прогресса в CTF — не количество сыгранных турниров, а количество разобранных задач после них. CTF write-up — пошаговый разбор решения, который публикуют участники после соревнования.

Формула простая: сыграли CTF — не решили 70% задач (это нормально для новичка, не расстраивайтесь) — нашли write-up'ы по каждой нерешённой задаче — прошли решение руками, повторив каждый шаг — на следующем CTF решили на 20% больше. Работает безотказно.

Где искать: раздел writeups на CTFtime у каждого соревнования, GitHub-репозитории команд, личные блоги участников. Многие топовые команды (C4T BuT S4D, HackerDom, perfect blue) публикуют подробные разборы с кодом.

Если хочется не ждать write-up'ов, а тренироваться с мгновенной обратной связью — на HackerLab.pro категории web и crypto дают именно это: решили или нет, без ожидания.

Выбор между Jeopardy и Attack-Defense на старте — вопрос не амбиций, а здравого смысла. Я видел десятки новичков, которые приходили на Attack-Defense «потому что там настоящий хакинг» — и уходили через два часа с пустым скорбордом и уверенностью, что CTF не для них. Те же люди на Jeopardy через месяц решали web-таски среднего уровня и получали first blood на студенческих турнирах.

Attack-Defense даёт уникальный опыт real-time incident response, но без фундамента из Jeopardy этот опыт превращается в бессистемный хаос. По моим наблюдениям, 3-4 сыгранных Jeopardy — минимальный порог, после которого Attack-Defense начинает приносить пользу, а не фрустрацию.

Начинайте с Jeopardy, набирайте базу по категориям, собирайте команду — и через пару месяцев пробуйте Attack-Defense, когда уже будете понимать, как работает SQL-инъекция, а не гуглить это в разгар тика. Если хочется не просто решать таски вслепую, а системно разобраться, почему эксплойт работает и как устроена защита — на курсе IB Basics эту базу закрывают без академического тона.

🚀 Хочешь закрепить на практике? Реши задачи по теме на HackerLab — категория «pentest-machines».

Поделиться

0 комментариев

Пожалуйста, войдите, чтобы оставить комментарий.

Загрузка комментариев...

Читайте также

Burp Suite для начинающих: настройка и первый CTF

11 мин.

3

Burp Suite для начинающих: настройка и первый CTF

Пошаговая настройка Burp Suite Community: прокси, FoxyProxy, SSL-сертификат. Решаем первый CTF веб-таск через Repeater за 10 минут с разбором.

15 ОКТЯБРЬ, 2026

Анализ PCAP с tshark: CLI-автоматизация для CTF

12 мин.

5

Анализ PCAP с tshark: CLI-автоматизация для CTF

Готовые команды tshark для разбора CTF-тасков: DNS-туннели, credential hunting, ICMP-каналы, экстракция файлов. Чеклист из 8 шагов и Python-обвязка.

15 ОКТЯБРЬ, 2026

Nmap для начинающих: от первого скана до CTF

13 мин.

5

Nmap для начинающих: от первого скана до CTF

Пошаговый workflow Nmap: типы скана, чтение вывода, NSE-скрипты и 3-шаговый алгоритм для решения network-тасков CTF. Практика вместо справочника флагов.

14 ОКТЯБРЬ, 2026