
Первый веб-таск на CTF. Форма логина, два поля, кнопка Submit. Ввожу admin/admin — «Access Denied». Открываю DevTools, нахожу POST-запрос к /api/login с JSON в теле. Пытаюсь подменить username на ' OR 1=1 -- прямо в консоли — браузер экранирует кавычки, ничего не работает. Пять минут мучений. Запускаю Burp Suite, перехватываю тот же запрос, вставляю payload в чистом виде через Repeater — флаг. Разница между «не могу решить» и «решил за минуту» свелась к одному инструменту, который я до этого боялся настраивать. Знакомо? Тогда читаем дальше — от установки Burp Suite до первого решённого таска.
Burp Suite — платформа для тестирования безопасности веб-приложений от PortSwigger. По данным Bugcrowd, почти каждый профессиональный веб-пентест и workflow на bug bounty проходит через этот инструмент. Но для CTF-игрока Burp Suite ценен не автоматическим сканированием (его в Community вообще нет), а тремя конкретными вещами: Подробнее — в нашем руководстве по пентест веб-приложений.
В CTF ты работаешь на стороне атакующего: ищешь SQL-инъекции, обходишь авторизацию, подменяешь куки. Burp Suite превращает HTTP-трафик в управляемую поверхность — вместо того чтобы гадать, что отправляет браузер, видишь каждый байт.
Community Edition бесплатна и покрывает всё, что нужно для CTF: Proxy, Repeater, Intruder (с ограничением скорости), Decoder и Comparer. Scanner с автоматическим поиском уязвимостей — только в Professional Edition, но для ручного разбора тасков он и не нужен.
Скачивайте инсталлятор с официального сайта portswigger.net/burp/releases — начиная с версии 2026.4 PortSwigger использует единый инсталлятор для Community и Professional. При запуске выбирается нужная редакция. Java 17+ встроена, ставить отдельно не надо.
Минимальные требования: Windows 10+ / macOS 10.14+ / любой современный Linux, 4 GB RAM (8 GB рекомендуется), 2+ ядра CPU. На практике на 4 GB Burp заметно тормозит, особенно при активном скроллинге HTTP History — если есть возможность, выделяйте 8 GB.
При первом запуске Burp предложит выбрать тип проекта: Temporary project — для быстрых сессий (данные пропадут после закрытия), New project on disk — для длительной работы. Для CTF-тасков хватает Temporary project. Жмите Use Burp defaults → Start Burp.
Совет: сразу увеличьте шрифт. Settings → Display, Font Size 16-18 для интерфейса и 18-20 для HTTP-сообщений. Там же переключите тему на Dark — глаза скажут спасибо на третьем часу CTF-марафона. После этого перезапустите Burp.
Burp Suite работает как прокси-сервер: встаёт между браузером и целевым сервером, пропускает через себя каждый HTTP/HTTPS-запрос. По умолчанию слушает на 127.0.0.1:8080. Но браузер об этом не знает, пока вы ему не скажете. Два способа это сделать.
Способ, который русскоязычные гайды почти не упоминают: в Burp Suite есть встроенный Chromium, уже настроенный на работу через прокси. Вкладка Proxy → Intercept, кнопка Open Browser. Готово — браузер сразу отправляет весь трафик через Burp, сертификат установлен, никаких плясок с настройками.
Для быстрого решения CTF-тасков — оптимальный вариант: открыли Burp, нажали Open Browser, перешли на URL задания, трафик уже перехватывается. Минус — встроенный браузер не поддерживает расширения Firefox (Wappalyzer, Cookie Editor), и переключаться между «режимом CTF» и обычным браузингом неудобно. Для повседневной работы нужен второй способ.
Firefox — основной браузер для веб-пентеста: отдельное хранилище сертификатов (не зависит от системного) и гибкие сетевые настройки. Ручная настройка прокси проста, но в быту — боль: после каждого CTF приходится вручную отключать прокси, иначе интернет «пропадает» (Burp не запущен — трафик некуда направить).
Решение — расширение FoxyProxy. Переключение прокси одним кликом. Настройка по шагам:
Burp Suite, Proxy Type — HTTP, Hostname — 127.0.0.1, Port — 8080.Переключение: клик по иконке FoxyProxy → выбрать «Burp Suite» для включения → «Disable» для отключения. Две секунды вместо пяти минут в настройках.
Если FoxyProxy не подходит — ручная настройка: Settings → General → Network Settings → Settings → Manual proxy configuration. HTTP Proxy: 127.0.0.1, Port: 8080, галочка «Also use this proxy for HTTPS». В поле исключений — localhost, 127.0.0.1. Но после каждого сеанса не забывайте возвращать «Use system proxy settings», иначе Firefox перестанет загружать страницы.
При перехвате HTTPS-трафика Burp Suite встаёт посредником между браузером и сервером — по сути реализует Adversary-in-the-Middle (T1557, Collection / Credential Access), только для легитимного тестирования. Burp генерирует собственный CA-сертификат для каждой установки и подписывает им все перехваченные HTTPS-соединения. Браузер этому сертификату не доверяет и показывает предупреждение на каждой странице. Без установки сертификата работать с HTTPS-сайтами (а это все CTF-площадки) невозможно.
http://burp (именно http, без s) — откроется страница Burp Suite.cacert.der.cacert.der.cacert.der с http://burp (шаги 1-3 те же).certutil (Linux) или Keychain Access (macOS).Перейдите через прокси на любой HTTPS-сайт (например, google.com). Если настройка корректна — страница загрузится без предупреждений, а в Burp Suite во вкладке Proxy → HTTP History вы увидите расшифрованный HTTPS-трафик. Браузер по-прежнему ругается на сертификат? Перезапустите его после импорта и убедитесь, что отметили галочку «Trust this CA to identify websites».
Настройка завершена. Теперь — как работает перехват трафика. Это ядро всей работы с Burp Suite.
Вкладка Proxy → Intercept, кнопка должна показывать «Intercept is on». Перейдите в браузере на любой сайт — страница «зависнет», потому что Burp остановил запрос до отправки на сервер. В окне Intercept — сырой HTTP-запрос: метод, URL, заголовки, тело.
Три кнопки:
Классическая ошибка новичка: забыть нажать Forward. Страница не грузится, кажется, что «всё сломалось» — а запрос просто ждёт в Burp. Нажали Forward — страница загрузилась. Я сам на это попался раз пять, прежде чем вбил в привычку.
В большинстве случаев перехватывать каждый запрос не нужно — это неудобно и медленно. Гораздо практичнее выключить Intercept (Intercept is off) и работать через вкладку Proxy → HTTP History. Burp записывает все запросы и ответы в журнал, даже когда перехват выключен. Спокойно кликаете по CTF-заданию в браузере, а потом разбираете записанные запросы.
Нажмите на любую строку в HTTP History — справа содержимое запроса (вкладка Request) и ответ сервера (Response). Отсюда можно отправить запрос в Repeater (Ctrl+R) или Intruder (Ctrl+I) правым кликом.
При решении CTF-тасков браузер генерирует десятки запросов к сторонним доменам: Google Analytics, шрифты, CDN, рекламные трекеры. Они засоряют HTTP History и мешают найти нужный запрос к целевому серверу.
Решение — Scope. Вкладка Target → Site map. В левой панели находите домен CTF-задания (например, ctf.example.com), правый клик → Add to scope. Burp спросит, хотите ли исключить out-of-scope трафик — жмите Yes. Теперь в HTTP History включаете фильтр «Show only in-scope items» — и видите только запросы к целевому серверу.
Кажется мелочью, но на практике экономит минуты на каждом таске. Когда в HTTP History 300 запросов к Google и 5 к целевому серверу — без Scope вы потеряете время на поиск нужного.
Repeater — инструмент для ручной повторной отправки HTTP-запросов с изменёнными параметрами. В CTF он используется постоянно: нашли запрос в HTTP History, отправили в Repeater (Ctrl+R), поменяли параметр, нажали Send, посмотрели ответ. Никаких форм в браузере — Repeater работает напрямую с HTTP.
Типичный сценарий: CTF-задание на IDOR (Insecure Direct Object Reference, подкатегория Broken Access Control — A01:2021 по OWASP). Авторизовались как пользователь с id=5, видите свой профиль. Перехватили GET-запрос к /api/user?id=5. Отправили в Repeater, поменяли id=5 на id=1 — получили данные администратора. Вот как это выглядит:
GET /api/user?id=1 HTTP/2
Host: ctf.example.com
Cookie: session=abc123def456
User-Agent: Mozilla/5.0
Accept: application/json
Нажимаете Send — в правой панели ответ сервера. Если пришли данные чужого пользователя — уязвимость подтверждена. Можно перебрать id от 1 до 10 вручную, но если нужно проверить сотни значений — это задача для Intruder.
Полезные приёмы в Repeater:
Ctrl+Shift+U для URL-кодирования спецсимволов. Избавляет от ручного кодирования кавычек и пробелов.Intruder автоматически подставляет множество значений в указанные позиции запроса. В Community Edition он работает медленно (ограничение по скорости), но для CTF-тасков, где перебрать нужно 50-500 значений, хватает с запасом.
Workflow с Intruder:
Ctrl+I).§ все параметры. Нажмите Clear §, затем выделите только нужный параметр и нажмите Add §.Пример: задание на брутфорс PIN-кода. Перехватили POST-запрос к /verify-pin с параметром pin=1234. В Intruder отметили pin=§1234§, на вкладке Payloads задали Numbers от 0000 до 9999 с шагом 1 и min/max digits = 4. Запустили атаку и отсортировали результаты по столбцу Length — ответ с другой длиной, скорее всего, содержит флаг.
Режимы атак Intruder:
| Режим | Что делает | Когда использовать |
|---|---|---|
| Sniper | Подставляет payloads в одну позицию по очереди | Перебор одного параметра (PIN, username) |
| Battering Ram | Подставляет один payload во все позиции одновременно | Когда один и тот же токен используется в нескольких местах |
| Pitchfork | Использует параллельные списки для разных позиций | Перебор пар логин-пароль из одного файла |
| Cluster Bomb | Перебирает все комбинации списков | Полный перебор username + password (количество запросов = произведение списков, так что аккуратнее) |
Для CTF чаще всего хватает Sniper (один параметр) и Cluster Bomb (два параметра). Результаты сортируйте по Status code и Length — аномальные значения указывают на успешный payload.
В CTF-тасках постоянно встречаются закодированные строки: Base64-токены в куках, URL-encoded параметры, hex-строки. Вместо онлайн-декодеров — встроенный Decoder: вставляете строку → выбираете Decode as Base64 (или URL, HTML, Hex) → результат. Работает и в обратную сторону: закодировать модифицированное значение и подставить обратно в запрос.
Практический пример: кука role=dXNlcg==. Вставили в Decoder → Decode as Base64 → user. Закодировали admin → YWRtaW4=. Подставили в запрос через Repeater — доступ к админ-панели. Классический CTF-таск на Cryptographic Failures (A02:2021 по OWASP). Я на такое попадал минимум на трёх площадках — авторы заданий обожают Base64 в куках.
Comparer полезен, когда два ответа сервера выглядят одинаково, но в одном есть флаг. Отправьте оба ответа в Comparer (правый клик → Send to Comparer), выберите Words или Bytes — Burp подсветит различия.
Соберём все инструменты в один рабочий процесс. Допустим, CTF-задание — страница интернет-магазина с возможностью добавить товар в корзину и «купить». Цель — купить товар за $0.
Шаг 1: Разведка. Открываем задание во встроенном браузере Burp (или в Firefox через FoxyProxy). Intercept выключен. Кликаем по страницам, добавляем товар в корзину, смотрим процесс покупки. Burp записывает всё в HTTP History.
Шаг 2: Анализ запросов. Открываем HTTP History, ищем запрос при добавлении товара. Находим: POST /api/cart/add с телом {"product_id": 1, "quantity": 1, "price": 29.99}. Цена передаётся с клиента — подозрительно. Кто доверяет клиенту цену товара?
Шаг 3: Модификация в Repeater. Отправляем запрос в Repeater (Ctrl+R). Меняем "price": 29.99 на "price": 0. Send. Ответ: 200 OK, товар добавлен в корзину за $0. Переходим к оплате — флаг.
Шаг 4: Если простая подмена не работает — пробуем отрицательную цену ("price": -29.99), нулевое количество ("quantity": 0), отрицательное количество. Каждый вариант — новая вкладка в Repeater. Сравниваем ответы по длине и содержимому.
Этот workflow покрывает большинство веб-тасков начального и среднего уровня. Ключевой навык — не в знании конкретной уязвимости, а в умении быстро найти нужный запрос в HTTP History, отправить в Repeater и методично проверить гипотезы.
| Ошибка | Симптом | Решение |
|---|---|---|
| Не установлен сертификат CA | Ошибка SEC_ERROR_UNKNOWN_ISSUER на каждом HTTPS-сайте | Скачайте сертификат с http://burp и импортируйте в браузер |
| FoxyProxy не переключён на Burp | Запросы не появляются в HTTP History | Кликните на иконку FoxyProxy и выберите профиль «Burp Suite» |
| Burp не запущен, а прокси включён | Браузер не загружает ни одну страницу | Запустите Burp или отключите прокси в FoxyProxy |
| Intercept оставлен включённым | Страница «зависает» при загрузке | Нажмите Forward или переключите Intercept is off |
| Не настроен Scope | HTTP History забит сотнями запросов к Google, CDN, трекерам | Добавьте целевой домен в Scope через Target → Site map |
| Порт 8080 занят другим процессом | Burp не запускает прокси-сервер | Измените порт в Settings → Proxy → Proxy listeners (например, на 8081) и обновите настройки FoxyProxy |
Ещё одна неочевидная штука: некоторые CTF-площадки используют WebSocket, а не обычные HTTP-запросы. Burp перехватывает WebSocket-трафик, но показывает его в отдельной вкладке Proxy → WebSockets history, а не в HTTP History. Если не видите нужных запросов — загляните туда.
Burp Suite настроен, базовый workflow понятен. Дальше зависит от целей: для углубления в веб-уязвимости — PortSwigger Web Security Academy (бесплатная площадка от авторов Burp с тасками от простых до продвинутых, и она реально хороша). Для практики CTF — площадки с веб-категориями, где каждый таск можно разобрать через Repeater и Intruder.
Расширения, которые стоит поставить сразу (Extender → BApp Store):
Горячие клавиши, которые экономят время: Ctrl+R — отправить в Repeater, Ctrl+I — отправить в Intruder, Ctrl+Shift+R — повторить последний запрос в Repeater.
За полтора года работы с Burp — сначала на CTF-площадках, потом на учебных пентестах — я пришёл к выводу: 80% веб-тасков решаются тремя действиями. Найти запрос в HTTP History. Отправить в Repeater. Поменять один параметр. Не нужен Scanner, не нужны десятки расширений, не нужна Pro-версия. Нужно понимание, какой параметр менять и почему. Многие новички тратят часы на изучение всех вкладок Burp Suite, хотя достаточно освоить Proxy + Repeater и начать решать таски — остальное придёт по ходу. Инструмент без практики бесполезен, а практика без инструмента — мучительна. Если хочешь пройти базу системно, от «что такое HTTP-запрос» до первых решённых задач — на IB Basics эту цепочку проходят за пару месяцев без воды.
🚀 Хочешь закрепить на практике? Реши задачи по теме на HackerLab — категория «web».
0 комментариев
Пожалуйста, войдите, чтобы оставить комментарий.
Загрузка комментариев...