
На первом CTF я убил два часа на задание, которое решалось за три минуты. Форма логина, два поля — username и password. Перебрал SQL-инъекции, попробовал XSS — глухо. Потом запустил Burp Suite, перехватил POST-запрос и увидел в теле скрытый параметр role=user. Заменил на role=admin — флаг на экране. С тех пор Burp — первое, что запускается на любом веб-таске. Это руководство по настройке Burp Suite для начинающих: от установки до решения первого CTF-задания. Без теории ради теории.
Burp Suite — HTTP-прокси от PortSwigger, который встаёт между браузером и сервером. Каждый запрос и каждый ответ проходят через него. Можно остановить запрос, поменять любое поле — заголовок, cookie, параметр тела — отправить дальше и посмотреть, что скажет сервер. По данным Bugcrowd, Burp Suite — индустриальный стандарт: «nearly every professional web pentest and bug bounty workflow runs through it or a tool like it». Подробнее — в нашем подробном разборе пентест веб-приложений.
Для CTF веб-тасков это даёт конкретные вещи:
Burp Suite Community Edition бесплатна и содержит всё, что нужно для CTF: Proxy, Repeater, Decoder и Intruder (с ограничением скорости). Сканер уязвимостей — только в Professional, но для CTF он и не нужен. Задачи решаются руками, через понимание логики приложения.
Инсталлятор качается с официального сайта portswigger.net/burp/releases#community. Начиная с версии 2026.4 PortSwigger использует единый установщик для Community и Professional — при запуске выбираете нужную редакцию.
Минимальные системные требования: Windows 10+, macOS 10.14+ или любой современный Linux-дистрибутив, 4 GB RAM (рекомендуется 8 GB). Java 17+ встроена в инсталлятор — отдельно ставить ничего не нужно.
При первом запуске: Temporary project → Use Burp defaults → Start Burp. Для CTF-задач временного проекта хватает за глаза — сохранять историю между сессиями обычно незачем. Сразу переключите тему на тёмную: Settings → Display → Theme → Dark. Глаза скажут спасибо после пары часов разбора запросов.
Burp Suite proxy по умолчанию слушает на 127.0.0.1:8080. Остаётся направить туда трафик браузера. Два способа — выбирайте, какой удобнее.
Во вкладке Proxy → Intercept жмёте Open Browser. Откроется встроенный Chromium, уже настроенный для работы с Burp: никаких прокси-настроек, никаких сертификатов. Документация PortSwigger описывает его как «preconfigured to work with Burp right out of the box».
Минус: это отдельный браузер без ваших закладок и расширений. Для быстрого CTF-таска — идеальный вариант. Для постоянной работы лучше настроить Firefox через FoxyProxy.
FoxyProxy — расширение для переключения прокси одной кнопкой. Без него придётся каждый раз лезть в сетевые настройки Firefox вручную.
Процесс установки:
Burp Suite, Proxy Type — HTTP, Proxy IP — 127.0.0.1, Port — 8080Теперь переключение между обычным интернетом и работой через Burp — один клик на иконку FoxyProxy. Выбираете профиль «Burp Suite» — трафик идёт через прокси. Выбираете «Turn Off» — браузер работает напрямую.
Критический момент: пока FoxyProxy направляет трафик на Burp, а сам Burp не запущен — ни один сайт не загрузится. Это не баг. Запустите Burp или выключите FoxyProxy.
Без этого шага каждый HTTPS-сайт покажет ошибку безопасности. Burp Suite генерирует собственный CA-сертификат для подписи перехваченного HTTPS-трафика, и браузер должен ему доверять.
http://burp (именно HTTP, не HTTPS)cacert.derПроверка: перейдите на любой HTTPS-сайт (например, google.com). Страница загружается без предупреждений — сертификат работает. В Burp во вкладке Proxy → HTTP history вы увидите расшифрованные HTTPS-запросы.
Самая частая ошибка новичков: всё настроили, HTTP-сайты работают, а HTTPS выдаёт SEC_ERROR_UNKNOWN_ISSUER. Причина — пропущенный шаг с сертификатом. Без CA-сертификата перехват HTTPS-трафика в Burp Suite невозможен. Точка.
Страница «зависнет» — это нормально. Burp задержал запрос до вашего решения. Во вкладке Intercept вы увидите raw HTTP-запрос: метод GET или POST, URL, заголовки Host, User-Agent, Cookie и тело запроса.
Три кнопки управления:
Нажмите Forward несколько раз, пока страница не загрузится полностью. Браузер отправляет десятки запросов на одну страницу: HTML-документ, CSS-стили, JavaScript-файлы, изображения, метрики аналитики. Каждый из них проходит через Burp. Да, это утомительно — поэтому дальше про HTTP history.
Для CTF постоянный перехват неудобен: каждый запрос приходится пропускать вручную. Переключите Intercept на off и просто пользуйтесь сайтом как обычно. Все запросы записываются в Proxy → HTTP history.
В истории можно:
Документация PortSwigger говорит, что просмотр HTTP history после взаимодействия с сайтом «is more convenient in many cases». На практике именно так и работаешь: сначала изучаете приложение как обычный пользователь — кликаете по ссылкам, отправляете формы, логинитесь. Потом открываете HTTP history и разбираете записанный трафик. Это и есть рабочий процесс на CTF.
Proxy → Intercept ловит запросы на лету. Repeater позволяет взять любой запрос, изменить его и отправить столько раз, сколько потребуется. Для web CTF заданий это основной рабочий инструмент. Я бы сказал — 80% решений рождаются именно здесь.
Ctrl+R)Слева — запрос, который можно редактировать. Справа — ответ сервера. Изменили параметр, нажали Send, изучили ответ. Изменили снова — Send. Браузер не участвует.
Подмена cookie — частый CTF-паттерн. Сервер выставляет cookie вида user=guest или isAdmin=false. В Repeater находите заголовок Cookie: и меняете значение. Если isAdmin=false заменить на isAdmin=true и сервер это проглотит без серверной проверки — перед вами Broken Access Control (A01:2021 по OWASP Top 10).
Модификация скрытых POST-параметров — HTML содержит <input type="hidden" name="price" value="100">. В браузере поле невидимо. В Burp Suite вы видите price=100 в теле запроса и можете заменить на price=0. Сервер доверяет данным от клиента без валидации — классика.
Смена HTTP-метода — некоторые CTF-задания проверяют, как сервер реагирует на GET вместо POST или наоборот. В Repeater метод меняется редактированием первой строки запроса. Одна буква — другой результат.
Подмена User-Agent — задание может проверять, с какого «браузера» пришёл запрос. Замена строки User-Agent на требуемое значение (Admin-Console, конкретную версию или строку бота) решает такие задачи.
Разберём пошагово типичный CTF-сценарий. Паттерн основан на распространённых заданиях CTF-платформ начального уровня: подмена параметров и декодирование данных.
Открываете CTF-задание в браузере через Burp-прокси. На странице — форма логина с полями username и password. Вводите admin / password, получаете «Access denied». DevTools браузера показывают стандартную форму — ничего подозрительного.
Переходите в Burp → Proxy → HTTP history. Находите POST-запрос к /login. Смотрите тело:
POST /login HTTP/1.1
Host: ctf-challenge.example
Content-Type: application/x-www-form-urlencoded
username=admin&password=password&role=user
Параметр role=user — его не было видно на странице. Скрытое поле формы, которое браузер отправляет автоматически. В DevTools его можно найти, но в потоке HTML легко пропустить. В Burp он виден сразу — в raw-запросе скрыть ничего нельзя.
Отправляете запрос в Repeater (Ctrl+R). Меняете role=user на role=admin. Жмёте Send.
Ответ сервера изменился: вместо «Access denied» пришёл HTML с текстом «Welcome, admin!» и строкой flag: Q29kZWJ5X0JTX0ZsYWc=. Сервер не проверял значение параметра role на стороне бэкенда — тупо доверился клиентским данным. Классический Broken Access Control.
Строка Q29kZWJ5X0JTX0ZsYWc= заканчивается на = — характерный признак Base64. Откройте вкладку Decoder в Burp Suite, вставьте строку, нажмите Decode as → Base64. Результат — читаемый текст флага.
Decoder поддерживает URL-кодирование, HTML-entity, hex и другие форматы. В CTF встречаются многоуровневые кодировки — этакие матрёшки: Base64 внутри URL-encode, например. Decoder позволяет применять декодирование последовательно: результат первого декодирования подаёте на вход второго.
Весь процесс от открытия задания до флага — 5-10 минут, когда знаешь алгоритм. Без Burp Suite на это ушёл бы час ковыряния в DevTools, и скрытый параметр в POST-теле легко пропустить.
Когда нужно проверить множество значений в одном параметре, ручной Repeater медленный. Burp Suite Intruder автоматизирует перебор и пригодится для CTF-задач:
Алгоритм работы:
Intruder покажет таблицу результатов с каждым payload, статус-кодом и длиной ответа. Ищите аномалии: если 99 запросов дали ответ длиной 1200 байт, а один — 3400 байт, этот payload заслуживает внимания в Repeater.
В Community Edition Intruder ограничен по скорости — примерно один запрос в секунду. Для CTF хватает: задания редко требуют перебора тысяч значений. Для серьёзного брутфорса потребуется Pro-версия или внешние инструменты вроде ffuf и hydra.
Эти проблемы встречаются при каждом первом запуске. Я сам через все прошёл.
Сайты не открываются — FoxyProxy направляет трафик на Burp, при этом Intercept включён. Каждый запрос ждёт нажатия Forward. Решение: выключите Intercept, если не нужен пошаговый перехват. Трафик по-прежнему записывается в HTTP history.
HTTPS выдаёт ошибку сертификата — не установлен CA-сертификат Burp Suite. Без него браузер не доверяет подписи Burp и блокирует соединение. Вернитесь к разделу установки SSL-сертификата.
HTTP history забита мусором — Burp записывает абсолютно всё: метрики Google Analytics, запросы к CDN, обновления расширений Firefox. Решение: в Target → Scope добавьте домен CTF-платформы. В HTTP history включите фильтр «Show only in-scope items». Мусора станет на порядок меньше.
Интернет «пропал» после закрытия Burp — FoxyProxy всё ещё гонит трафик на несуществующий прокси. Нажмите на иконку FoxyProxy → Turn Off. Привыкните проверять FoxyProxy первым делом, когда «не работает интернет».
Repeater возвращает ошибку, хотя в браузере всё работало — в запросе отсутствует обязательный заголовок. Чаще всего это Cookie с идентификатором сессии или неправильный Content-Type. Сравните запрос в Repeater с оригиналом в HTTP history — найдите различия.
На CTF-соревнованиях время ограничено. Эти сочетания экономят минуты:
Ctrl+R — отправить запрос в RepeaterCtrl+I — отправить в IntruderCtrl+Shift+R — повторить последний запросCtrl+F — поиск внутри запроса или ответа (незаменимо для поиска flag{ или ctf{ в длинных ответах сервера)Burp Suite proxy и Repeater закрывают основную массу CTF веб-тасков начального уровня. Куда копать дальше:
SQL-инъекции — параметр запроса попадает напрямую в SQL-запрос на сервере. Через Repeater подставляются payload'ы и анализируется изменение ответа. Категория Injection (A03:2021 по OWASP Top 10) — одна из самых распространённых уязвимостей, и на CTF она встречается постоянно.
XSS (Cross-Site Scripting) — внедрение JavaScript через пользовательский ввод. В Burp видно, где введённое значение отражается в ответе сервера. Это упрощает поиск reflected XSS — не нужно гадать, какое поле уязвимо.
IDOR (Insecure Direct Object Reference) — подмена идентификатора объекта. Запрос GET /api/user/123 возвращает ваши данные. А что вернёт /api/user/124? Intruder позволяет перебрать диапазон ID автоматически и найти чужие записи.
SSRF (Server-Side Request Forgery) — принуждение сервера обратиться к внутреннему ресурсу. OWASP выделяет SSRF в отдельную категорию рисков (A10:2021). Через Repeater можно подставить внутренние адреса вместо внешних URL и проверить, обращается ли сервер к ним.
Все эти техники строятся на одном навыке: перехватить запрос, понять его структуру, изменить нужный параметр, проанализировать результат. Burp Suite для начинающих — прежде всего умение читать HTTP-трафик между браузером и сервером.
Большинство новичков тратят недели на изучение каждой вкладки Burp Suite по отдельности: Scanner, Comparer, Sequencer, расширения из BApp Store. На практике для первых 30-40 CTF веб-тасков хватает трёх вкладок: Proxy, Repeater и Decoder. Не инструмент делает пентестера, а понимание того, что происходит в HTTP-запросе. Я встречал людей, которые знали каждую настройку Burp Professional, но не могли объяснить, зачем серверу заголовок Content-Type. И наоборот — тех, кто решал задачи через curl и блокнот, потому что понимали протокол на уровне байтов. Инструмент ускоряет работу, но не заменяет знание основ. После первых экспериментов с перехватом стоит разобраться, как устроен HTTP на уровне заголовков, методов, статус-кодов и механизмов аутентификации — без этого фундамента любой инструмент остаётся чёрным ящиком с кнопками. На IB Basics эту связку «протокол + инструмент» проходят с лабами, а не слайдами — для тех, кому мало CTF-площадок без объяснений «почему».
🚀 Хочешь закрепить на практике? Реши задачи по теме на HackerLab — категория «web».
0 комментариев
Пожалуйста, войдите, чтобы оставить комментарий.
Загрузка комментариев...