Обучение

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

Раздел 0

С чего начать

CTF (Capture The Flag) — формат соревнований по информационной безопасности. В каждом задании спрятана секретная строка — флаг. Нашли его — сдали — получили очки.

  1. Формат флага. Флаг всегда выглядит как CTF{...}. Регистр важен: CTF{Abc} и CTF{abc} — разные флаги. Вводите флаг целиком, вместе с CTF{ и }.
  2. Два типа заданий. Флаговые: данные (шифртекст, логи, код) даны прямо в условии, нужно найти в них флаг. Задачи на код (категория «Защита»): напишите функцию, её проверят автотесты в изолированной песочнице.
  3. Как решать. Прочитайте условие и данные. Откройте раздел «Обучение» на странице задания: там теория и инструменты. Если застряли — открывайте шаги решения по одному, а не все сразу: так вы научитесь большему.
  4. Что понадобится. Python 3 — главный инструмент: почти любое задание решается скриптом в 5–15 строк. Для быстрых преобразований удобен CyberChef (gchq.github.io/CyberChef) — он работает прямо в браузере.
  5. Порядок прохождения. Начните с уровня «Новичок» в криптографии и вебе, затем форензика и сети. «Сложный» и «Эксперт» требуют математики — прочитайте раздел о криптографии в этом учебнике.
  6. Правила. Атакуйте только данные заданий. Сам сайт и чужие системы — не цель. Не публикуйте флаги. Всё, что вы здесь изучаете, применяется только там, где у вас есть разрешение.
Раздел 1

Криптография

Криптография изучает, как защищать данные шифрованием — и как ломать слабые схемы. В CTF чаще всего встречаются кодировки, которые путают с шифрами, классические шифры, XOR и «учебный» RSA с ошибками.

Ключевые понятия

Кодирование ≠ шифрование

Base64, hex, URL-кодирование меняют только представление данных, ключа нет. Раскодировать может любой.

Шифр Цезаря и Виженера

Сдвиг букв алфавита на фиксированное число или по ключу-слову. Ломаются перебором или по известному тексту.

XOR

Побитовое «исключающее ИЛИ». Главное свойство: a ^ k ^ k = a. Если известна часть открытого текста — известна часть ключа.

Известный открытый текст

Мы знаем, что флаг начинается с CTF{. Это сразу даёт первые байты ключа во многих задачах.

RSA

c = m^e mod n, m = c^d mod n, где n = p·q. Стойкость держится на том, что n трудно разложить. Ошибки в параметрах (маленькое e, маленькое d, близкие p и q, общий модуль) ломают схему.

ГПСЧ

Генераторы псевдослучайных чисел (LCG, Mersenne Twister) предсказуемы, если видно достаточно выходов. Для секретов нужен модуль secrets.

Инструменты

  • Python: base64, bytes.fromhex, pow(x, -1, m) для обратного по модулю
  • CyberChef
  • dCode.fr — справочник классических шифров

Практика по порядку

1. Это не шифрфлаг Новичок100 2. Салат «Цезарь»флаг Новичок100 3. Шестнадцать оттенковфлаг Новичок100 4. Нули и единицыфлаг Новичок100 5. Только заглавныефлаг Новичок100 6. Тринадцать шаговфлаг Новичок100 7. Зеркальный алфавитфлаг Новичок100 8. Восемь пальцевфлаг Новичок100 9. Таблица ASCIIфлаг Новичок100 10. Задом наперёдфлаг Новичок100 11. Точки и тирефлаг Новичок100 12. Сорок семьфлаг Новичок100 13. Номера буквфлаг Новичок100 14. Однобайтовый XORфлаг Средний250 15. Виженер на троихфлаг Средний250 16. Хэш без солифлаг Средний250 17. Ключ на стикерефлаг Средний250 18. Квадрат Полибияфлаг Средний250 19. Заборфлаг Средний250 20. Столбцыфлаг Средний250 21. Аффинныйфлаг Средний250 22. Шифр Бофортафлаг Средний250 23. RSA без набивкифлаг Сложный500 24. Ключ по кругуфлаг Сложный500 25. Слишком близкие простыефлаг Сложный500 26. Блокнот на два разафлаг Сложный500 27. Сколько рельсов?флаг Сложный500 28. Самоключфлаг Сложный500 29. Предсказательфлаг Эксперт1000 30. Общий модульфлаг Эксперт1000 31. Маленькая тайнафлаг Эксперт1000 32. Рассылкафлаг Эксперт1000 33. Клон вихряфлаг Эксперт1000
Раздел 2

Веб

Веб-безопасность — про ошибки в сайтах: проверки на стороне клиента, утечки через публичные файлы, инъекции, слабые токены и утечки по времени ответа.

Ключевые понятия

Клиент не доверенный

Всё, что выполняется в браузере (JavaScript, скрытые поля), пользователь может прочитать и изменить.

robots.txt

Публичный файл с просьбой к поисковикам. Часто выдаёт «секретные» разделы.

SQL-инъекция

Данные пользователя попадают в SQL-запрос как код. Слепая инъекция вытаскивает данные по одному символу через «да/нет» ответы.

JWT

Токен header.payload.signature в base64url. Подпись HS256 = HMAC с секретом. Слабый секрет подбирается словарём.

Атаки по времени

Если сравнение строк останавливается на первом различии, время ответа выдаёт, сколько символов угадано.

Инструменты

  • Инструменты разработчика браузера (F12)
  • Python urllib.parse, hmac, hashlib
  • jwt.io — разбор JWT
  • Burp Suite Community

Практика по порядку

Раздел 3

Форензика

Форензика — расследование инцидентов по следам: файлам, метаданным и журналам. Главное умение — быстро отфильтровать важное из большого объёма данных.

Ключевые понятия

Сигнатуры файлов

Первые байты файла (magic bytes) указывают на настоящий формат, независимо от расширения.

Метаданные

EXIF в фото хранит модель камеры, дату, GPS и комментарии. Их часто забывают удалить.

Журналы

/var/log/auth.log — входы по SSH, журналы веб-сервера — все запросы. Поиск аномалий: много ошибок с одного адреса.

Инструменты

  • grep, sort, uniq -c — анализ логов
  • exiftool
  • Таблица сигнатур файлов (Wikipedia: List of file signatures)
  • Python collections.Counter

Практика по порядку

Раздел 4

Сети

Сетевая безопасность — анализ трафика. Незашифрованные протоколы выдают пароли, а DNS часто используют для скрытой передачи данных.

Ключевые понятия

HTTP без TLS

Все заголовки, включая Authorization, идут открытым текстом.

Basic Auth

Authorization: Basic base64(логин:пароль) — это кодирование, а не шифрование.

DNS-туннелирование

Данные кодируют в поддомены запросов: кусок-данных.домен-атакующего. Признак — длинные случайные поддомены к одному домену.

Инструменты

  • Wireshark
  • tcpdump
  • Python re для разбора текстовых дампов

Практика по порядку

Раздел 5

Реверс

Реверс-инжиниринг — восстановление логики программы и обращение её проверок. Если программа преобразует ввод и сравнивает с эталоном — примените обратные операции к эталону.

Ключевые понятия

Обратимые операции

XOR обратим сам собой, сложение — вычитанием, циклический сдвиг влево — сдвигом вправо.

Порядок

Обращайте операции в обратном порядке: последнюю — первой.

Работа с байтами

& 0xFF оставляет 8 бит, ord/chr переводят символы в числа и обратно.

Инструменты

  • Python
  • Ghidra / IDA Free — для настоящих бинарников
  • dis — дизассемблер байткода Python

Практика по порядку

Раздел 6

Стеганография

Стеганография прячет сам факт передачи сообщения: в картинках, звуке или обычном тексте.

Ключевые понятия

Акростих

Сообщение из первых букв строк.

LSB

Младшие биты пикселей изображения — классический способ спрятать данные в картинке.

Инструменты

  • Внимательный взгляд
  • zsteg, steghide, stegsolve — для изображений

Практика по порядку

Раздел 7

Защита (код)

Задачи на код учат писать защитные проверки: политики паролей, обнаружение атак, проверку токенов, фильтры от SSRF и path traversal. Решение проверяют скрытые тесты.

Ключевые понятия

Функция по сигнатуре

Сохраните имя функции и параметры из шаблона: тесты вызывают именно её.

Граничные случаи

Пустые строки, неверный формат, регистр букв — скрытые тесты проверяют именно это.

Белые списки

Разрешайте только известно хорошее, а не запрещайте известно плохое.

Как идёт проверка

Код выполняется в изолированной песочнице без сети, с лимитами времени и памяти. Результат: «Принято», «Неверный ответ», «Ошибка выполнения», «Превышено время».

Инструменты

  • Python 3 или Node.js локально — отладьте на примерах из условия
  • Модули re, hmac, base64, json

Практика по порядку

1. Политика паролейкод Новичок100 2. Аудит заголовковкод Новичок100 3. Контрольная цифракод Новичок100 4. Экранированиекод Новичок100 5. Маска картыкод Новичок100 6. Валидный IPv4код Новичок100 7. Фильтр загрузоккод Новичок100 8. Скрыть почтукод Новичок100 9. Взломщик Цезарякод Средний250 10. Внутренний или внешнийкод Средний250 11. Утечка ключейкод Средний250 12. Свой или чужойкод Средний250 13. Флаги cookieкод Средний250 14. Безопасный редиректкод Средний250 15. Блокировка учётоккод Средний250 16. Скользящее окнокод Средний250 17. Имя пользователякод Средний250 18. Срок действия токенакод Средний250 19. Аудит CSPкод Средний250 20. Чистое имя файлакод Средний250 21. Детектор переборакод Сложный500 22. Честная проверка JWTкод Сложный500 23. Без выхода за каталогкод Сложный500 24. Слить диапазоныкод Сложный500 25. Белый список CORSкод Сложный500 26. Почти тот же паролькод Сложный500 27. Ведро с токенамикод Сложный500 28. Полный IPv6код Сложный500 29. Уязвимая версиякод Эксперт1000 30. Правила доступакод Эксперт1000