Обучение
Учебник по категориям: ключевые понятия, инструменты и задания в рекомендуемом порядке — от простого к сложному. У каждого задания есть свой разбор с теорией и пошаговым планом.
С чего начать
CTF (Capture The Flag) — формат соревнований по информационной безопасности. В каждом задании спрятана секретная строка — флаг. Нашли его — сдали — получили очки.
- Формат флага. Флаг всегда выглядит как
CTF{...}. Регистр важен:CTF{Abc}иCTF{abc}— разные флаги. Вводите флаг целиком, вместе сCTF{и}. - Два типа заданий. Флаговые: данные (шифртекст, логи, код) даны прямо в условии, нужно найти в них флаг. Задачи на код (категория «Защита»): напишите функцию, её проверят автотесты в изолированной песочнице.
- Как решать. Прочитайте условие и данные. Откройте раздел «Обучение» на странице задания: там теория и инструменты. Если застряли — открывайте шаги решения по одному, а не все сразу: так вы научитесь большему.
- Что понадобится. Python 3 — главный инструмент: почти любое задание решается скриптом в 5–15 строк. Для быстрых преобразований удобен CyberChef (gchq.github.io/CyberChef) — он работает прямо в браузере.
- Порядок прохождения. Начните с уровня «Новичок» в криптографии и вебе, затем форензика и сети. «Сложный» и «Эксперт» требуют математики — прочитайте раздел о криптографии в этом учебнике.
- Правила. Атакуйте только данные заданий. Сам сайт и чужие системы — не цель. Не публикуйте флаги. Всё, что вы здесь изучаете, применяется только там, где у вас есть разрешение.
Криптография
Криптография изучает, как защищать данные шифрованием — и как ломать слабые схемы. В 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 — справочник классических шифров
Практика по порядку
Веб
Веб-безопасность — про ошибки в сайтах: проверки на стороне клиента, утечки через публичные файлы, инъекции, слабые токены и утечки по времени ответа.
Ключевые понятия
- Клиент не доверенный
Всё, что выполняется в браузере (JavaScript, скрытые поля), пользователь может прочитать и изменить.
- robots.txt
Публичный файл с просьбой к поисковикам. Часто выдаёт «секретные» разделы.
- SQL-инъекция
Данные пользователя попадают в SQL-запрос как код. Слепая инъекция вытаскивает данные по одному символу через «да/нет» ответы.
- JWT
Токен
header.payload.signatureв base64url. Подпись HS256 = HMAC с секретом. Слабый секрет подбирается словарём.- Атаки по времени
Если сравнение строк останавливается на первом различии, время ответа выдаёт, сколько символов угадано.
Инструменты
- Инструменты разработчика браузера (F12)
- Python
urllib.parse,hmac,hashlib - jwt.io — разбор JWT
- Burp Suite Community
Форензика
Форензика — расследование инцидентов по следам: файлам, метаданным и журналам. Главное умение — быстро отфильтровать важное из большого объёма данных.
Ключевые понятия
- Сигнатуры файлов
Первые байты файла (magic bytes) указывают на настоящий формат, независимо от расширения.
- Метаданные
EXIF в фото хранит модель камеры, дату, GPS и комментарии. Их часто забывают удалить.
- Журналы
/var/log/auth.log— входы по SSH, журналы веб-сервера — все запросы. Поиск аномалий: много ошибок с одного адреса.
Инструменты
grep,sort,uniq -c— анализ логов- exiftool
- Таблица сигнатур файлов (Wikipedia: List of file signatures)
- Python
collections.Counter
Практика по порядку
Сети
Сетевая безопасность — анализ трафика. Незашифрованные протоколы выдают пароли, а DNS часто используют для скрытой передачи данных.
Ключевые понятия
- HTTP без TLS
Все заголовки, включая
Authorization, идут открытым текстом.- Basic Auth
Authorization: Basic base64(логин:пароль)— это кодирование, а не шифрование.- DNS-туннелирование
Данные кодируют в поддомены запросов:
кусок-данных.домен-атакующего. Признак — длинные случайные поддомены к одному домену.
Инструменты
- Wireshark
- tcpdump
- Python
reдля разбора текстовых дампов
Практика по порядку
Реверс
Реверс-инжиниринг — восстановление логики программы и обращение её проверок. Если программа преобразует ввод и сравнивает с эталоном — примените обратные операции к эталону.
Ключевые понятия
- Обратимые операции
XOR обратим сам собой, сложение — вычитанием, циклический сдвиг влево — сдвигом вправо.
- Порядок
Обращайте операции в обратном порядке: последнюю — первой.
- Работа с байтами
& 0xFFоставляет 8 бит,ord/chrпереводят символы в числа и обратно.
Инструменты
- Python
- Ghidra / IDA Free — для настоящих бинарников
- dis — дизассемблер байткода Python
Практика по порядку
Стеганография
Стеганография прячет сам факт передачи сообщения: в картинках, звуке или обычном тексте.
Ключевые понятия
- Акростих
Сообщение из первых букв строк.
- LSB
Младшие биты пикселей изображения — классический способ спрятать данные в картинке.
Инструменты
- Внимательный взгляд
- zsteg, steghide, stegsolve — для изображений
Защита (код)
Задачи на код учат писать защитные проверки: политики паролей, обнаружение атак, проверку токенов, фильтры от SSRF и path traversal. Решение проверяют скрытые тесты.
Ключевые понятия
- Функция по сигнатуре
Сохраните имя функции и параметры из шаблона: тесты вызывают именно её.
- Граничные случаи
Пустые строки, неверный формат, регистр букв — скрытые тесты проверяют именно это.
- Белые списки
Разрешайте только известно хорошее, а не запрещайте известно плохое.
- Как идёт проверка
Код выполняется в изолированной песочнице без сети, с лимитами времени и памяти. Результат: «Принято», «Неверный ответ», «Ошибка выполнения», «Превышено время».
Инструменты
- Python 3 или Node.js локально — отладьте на примерах из условия
- Модули
re,hmac,base64,json