Вернемся к изучению Burp Suite и найдем два флага на picoCTF. Научимся пользоваться инструментом Intruder.
Автор статьи никого не призывает к правонарушениям и отказывается нести ответственность за ваши действия. Вся информация предоставлена исключительно в ознакомительных целях. Все действия происходят на виртуальных машинах и внутри локальной сети автора. Спасибо!
Target – цель – инструмент, который содержит подробную информацию о наших целевых веб-приложениях и позволяет управлять процессом тестирования.
Proxy – прокси – сам перехватчик, который работает как «человек-по-середине» между браузером и веб-приложением. Он позволяет перехватывать и изменять проходящий трафик в обоих направлениях.
Intruder – инструмент для проведения автоматизированных индивидуальных атак на веб-приложения.
Repeater – повторитель – инструмент для ручного изменения и повторной отправки отдельных HTTP-запросов и анализа ответов веб-приложения.
Sequencer – секвенсор – инструмент для анализа качества случайности в токенах сеанса приложения или в других данных, которые по умолчанию непредсказуемые.
Decoder – декодер – инструмент для ручного или автоматизированного декодирования или кодирования данных приложения.
Comparer – сравнитель – для визуализации различий между любыми двумя элементами данных, например, HTTP-сообщений.
Extensions – позволяет загружать расширения, использующие ваш или стороний код.
Подмена User-Agent
Чтобы подменить User-Agent, достаточно найти в вкладке Proxy -> Options раздел «Match and Replace» и выбрать нужный User-Agent, либо добавить свой. Для чего это может быть нужно? Например, сайт может хранить значение User-Agent в базе данных (какая-нибудь статистика посещений), следовательно, появляется уязвимость при неправильной обработке таких полей (перед добавлением данных в БД, например, кавычки не экранируются). Мы можем создать правило для замены ^User-Agent.*$ на User-Agent: '<script>alert(1)</script> и узнать о возможности SQL-инъекции и XSS.
Возвращаемся к заданию
Если внимательно посмотреть на отправляемые запросы, то можно заметить одинаковый адрес для обеих страниц (синяя и красная), но различные HTTP-методы: POST и GET. На самом деле, подсказка содержится в названии задания «GET aHEAD».
Переходим на вкладку Target, нажимаем по нашему хосту правой кнопкой мыши и отправляем его в Repeater (Send to Repeater). Переходим на вкладку Repeater и меняем метод запроса с GET или POST на HEAD. Нажимаем Send. Вот наш ответ:
HTTP/1.1 200 OK
flag: picoCTF{ответ}
Content-type: text/html; charset=UTF-8
GET / HTTP/1.1
Host: mercury.picoctf.net:27177
…
Cookie: name=-1
Connection: close
Не будем ходить вокруг да около и сразу посмотрим на единственный cookie с именем name. Что-то с ним нужно сделать – в этом я уверен. Отправим для начала этот запрос в Repeater и попробуем поменять значение куки name на 0:
That is a cookie! Not very special though...
I love snickerdoodle cookies!
Такой ответ показался на странице. Поменяем на 1:
GET /check HTTP/1.1
Host: mercury.picoctf.net:27177
…
Cookie: name=1
Connection: close
Referer: http://mercury.picoctf.net:27177/
Получаем уже другой ответ: I love chocolate chip cookies!
Подозреваю что флаг появится в одном из таких сообщений. Разумеется, вручную такой перебор делать неэффективно. А если флаг находится на 158 позиции, например? Отправляем этот запрос в Intruder (инструмент для автоматизации атаки):
Как видите, значение, которое мы планируем менять, обрамлено символами параграфа. Если Intruder сам этого не сделал, то выделите значение -1 и нажмите кнопку Add в правой части.
После чего переходим на вкладку Payloads (Нагрузки). Вариантов можем быть множество: забить список чисел вручную (плохой вариант), загрузить список с числами (тоже так себе) или выбрать тип нагрузки Numbers и генерировать целые числа от 1 до 100. Вряд ли флаг запрятан так далеко.
Переходим на вкладку Options. Во-первых, необходимо разрешить автоматический редирект: в разделе «Redirections» ставим галочку у «Always». Во-вторых, чтобы вручную не искать флаг, добавим в раздел «Grep – Match» подстроку «CTF», которая наверняка присутствует в самом флаге.