В каждой профессии есть ритуал инициации, о котором не принято говорить вслух. У хирургов — первая ночная смена с тяжёлым пациентом. У пилотов — посадка вслепую на тренажёре. У багхантеров и пентестеров есть Карлос. Да, тот самый Carlos, чей пароль или токен вы будете добывать из экзаменационного приложения, чтоб повысить привилегии, пока время идет, а Burp Collaborator молчит, и кто его знает, то ли нагрузка неправильная, то ли приложение тупит.
Всем привет. Меня зовут Султан. Первая попытка, два часа — экзамен сдан.

Знаю, о чём вы подумали: BSCP с первого раза сдают единицы, даже опытным специалистам зачастую не удается сдать с первой попытки. Почему у меня получилось? Ответ — в методологии.
Я не буду рассказывать о вещах, которые и так известны абсолютному большинству. Раскрывать все уязвимости из экзамена смысла нет: существует около сотни различных комбинаций, запомнить их все невозможно.
Подготовка. Три месяца до Карлоса
Что имеем до начала, пройденный двухмесячный курс, полгода до этого. Ничего не успел выучить, лишь бегло пройденный материал. После курса, хаотичное изучения материалов в интернете, решение лаб на различных специализированных платформах. В целом багаж знаний никакой, так, что-то видел, что-то читал.
Далее три месяца интенсивной подготовки к экзамену. Рассказываю по дням, часам и темам.
Режим
Четыре, пять, иногда шесть часов ежедневно. Без выходных. Звучит жестко, но важно войти в рабочий ритм, через пару недель это станет нормой, дисциплина сделает свое дело. Мозг привыкнет к нагрузке, неделя и Burp Suite перестанет быть окном с кучей вкладок.
Такое погружение даёт важный эффект: начинаешь визуально понимать, где находится или может находиться уязвимость, привыкаешь к приложению, к инструменту. В перспективе это сэкономит кучу времени на экзамене.
Три месяца — оптимальный срок. Меньше — не успеете переварить объём. Больше — начинаете забывать начало.
Подход к изучению тем
База — PortSwigger Web Security Academy. Но я не проходил её линейно. После изучения всего, что представлено по конкретной теме на PortSwigger, искал дополнительные материалы, читал статьи экспертов, разбирал раскрытые репорты. Решал лабораторные работы вне Академии — это расширяет понимание уязвимости.
Решая лабы сложнее чем в Академии, а после возвращаясь обратно, начал понимать насколько легче стало их решать. Знания перешли в больше чем необходимый минимум. Это придало уверенность в том, что я действительно разобрался, а не зазубрил или не просто запомнил нагрузки.
Следующее, на что обращал внимание, это доведение уязвимости до эксплуатации. Например, если решал лабу по XSS, всегда старался довести ее до кражи куки. На экзамене нужно именно проэксплуатировать уязвимость, а в Академии решение часто ограничивается PoC с alert().
По пунктам
Вот что я делал эти три месяца:
— 4-6 часов ежедневно, без выходных. — Каждая тема: теория PortSwigger → статьи экспертов → раскрытые репорты → сторонние лабораторные работы.
— Приоритет темам, которые реально встречаются на экзамене. GraphQL и подобное — потом.
— Любую XSS доводить до кражи куки. Никаких alert() для галочки.
— После каждой пройденной темы — Mystery Labs по ней же.
— За две недели до экзамена — Mystery Labs на время по всем темам вперемешку.
— Минимум два полных пробных экзамена. Без подсказок, с таймером, до победного.
Последние две недели
Здесь режим меняется. Знания уже есть. Задача — научиться применять их на время.
Я включал таймер и начинал решать Mystery Labs вслепую. Ты не знаешь что за уязвимость заложена и должен сам её определить, ключевое что хочу отметить, это то, что самый главный скилл который я натренировал, это быстрое обнаружение уязвимости, это очень важный фактор который сыграл большую роль на экзамене. На обнаружение уязвимости на время, отводил условно 5-7 минут. Проведя почти три месяца в подготовке, смотря изо дня в день на одно и то же приложение я в целом ориентировался быстро, но этого явно недостаточно, почему, я вспомнил статьи о том, кто и почему завалил экзамен, оказалось что самая частая проблема что во время экзамена сдающие просто не могли определить какая уязвимость перед ними. именно поэтому я уделил обнаружению уязвимости отдельное время.
Обнаружив уязвимость, решал лабу до конца. 15-25 штук в день с лимитом 40 минут на лабу. На экзамене два приложения, в каждом три этапа, условно по 40 минут на каждый этап. Если не укладывался — дорешивал, но фиксировал: где застрял, почему потерял время, какой вектор не проверил сразу. Итого: 5-7 минут на определение уязвимости, 30-35 минут на дорешивание лабы. Проводил анализ по истечении нескольких дней, на чем часто спотыкался, на обнаружение конкретно какой уязвимости ушло больше времени, какую нагрузку не смог подобрать. Через неделю, я начал автоматически понимать что передо мной и что с этим надо делать.
Пробные экзамены
За три дня до назначенной даты я провёл два полных пробных экзамена. Условия максимально приближённые к реальным: четыре часа, два приложения, по три этапа в каждом.
Первый пробник — не уложился в тайминг, долго думал над третьим этапом, небезопасная десериализация, не смог подобрать правильную нагрузку для отправки в Burp Collaborator. Второй — чисто, оставалось еще 15-20 минут до конца. После второго понял: я готов.
Что будет на экзамене, а что нет
Уже известно, что на экзамене представлены не все темы из Академии. По мере прохождения тем становится ясно, что некоторые из них просто не могут быть в экзамене из-за специфики этапов.
Например: вы не получите доступ к аккаунту через GraphQL и не прочитаете локальный файл с помощью CSRF. Каждый этап подразумевает конкретные типы уязвимостей — это нужно иметь в виду при планировании подготовки. Существует множество таблиц на просторах интернета с возможными уязвимостями которые могут встретиться на том или ином этапе экзамена, можно на них ориентироваться при подготовке. Вот примерная таблица

Что на самом деле решает
В конце этого трёхмесячного марафона я вывел для себя формулу:
Концентрация × Усидчивость × Внимание к деталям = Скорость.
За три месяца вы получите все необходимые знания и навыки для успешной сдачи экзамена.
И да — огромное желание. Без него три месяца по пять часов в день не вытянуть. Оно либо есть, либо нет.
А теперь — интересное. Разберу одну задачу, которая попалась мне на экзамене. Я показываю её, потому что она как раз о том, что нужно шире изучать тему, нежели представлено в академии.
CSRF: Сброс пароля администратора
На первом этапе второго приложения я получил доступ к аккаунту Карлоса через отравление веб-кеша. В куках была сессия:

Первая часть — URL-encoded JSON {"username":"carlos","isloggedin":true}.
Вторая часть после -- — цифровая подпись HMAC. Сервер использует её, чтобы защитить куку от подделки.
Первое что приходит в голову это CSRF атака. Сброс пароля на эндпоинте /new_password. Отправляется POST запрос на смену пароля, в теле которого указан CSRF токен и username для которого меняется пароль. Помнив, что сервер отклонит куку в случае ее изменения, возникла мысль, а что будет, если куку оставить Карлоса, а в теле username=carlos изменить на username=administrator? Сервер вернул куки администратора. Я успешно повысил права до администратора.

Благодарность
Отдельное спасибо моему другу и наставнику — Никите (wr3dmast3r). Без его поддержки и советов неизвестно когда закончился бы мой забег на этот сертификат.
Спасибо всем за прочтение статьи. Буду рад если мои советы и разбор помогут вам в подготовке к экзамену и приведут вас к долгожданному сертификату.
Сертификат: https://portswigger.net/web-security/e/c/22a248890961507f
Telegram: @PUham9yPQ
