что нужно знать для ctf

Как стать специалистом по кибербезопасности, играя в CTF

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

руководитель направления исследования новых киберугроз BI.Zone

Профессия кибербезопасника — одна из самых высокооплачиваемых в сфере IT. Но, несмотря на большие оклады, таких специалистов не хватает: глобальный дефицит составляет 3 млн, по оценкам Сбербанка.

Высокий спрос предъявляет и высокие требования. Чтобы им соответствовать, нужна не столько хорошая теоретическая подготовка, сколько большой практический опыт.

Хорошая новость в условиях самоизоляции: получить этот опыт можно не выходя из дома. В этом помогает участие в CTF — соревнованиях по кибербезопасности. О том, как все устроено, как подготовиться и где проверить свои силы, рассказывает Никита Вдовушкин, руководитель направления исследования новых киберугроз BI.Zone.

Правила игры

Что такое CTF. В переводе с английского capture the flag означает «захватить флаг». Так и есть, CTF — это соревнования, где команды решают прикладные задачи в области кибербезопасности, чтобы получить флаг — уникальную последовательность символов. Флаг (его отправляют в специальную платформу) подтверждает, что участники действительно взломали систему, нашли уязвимость алгоритма генерации ключа или выполнили какую-либо другую задачу.

Где проходит. CTF-турниры проводят как очно, так и онлайн. Очные встречи длятся не меньше семи часов, а онлайн-соревнования могут идти и сутки напролет — чтобы команды из разных часовых поясов были примерно в равных условиях.

Форматы часто совмещают: отборочные этапы проводят в сети, а в финале участники собираются на одной площадке. Именно так организован, например, американский DEF CON CTF, а в России — CTFZone.

Как соревнуются. CTF бывают двух видов. Первый — jeopardy: участникам предлагают набор задач разной «стоимости», как в телевикторине Jeopardy! на американском ТВ (наш аналог — «Своя игра»). За верное решение начисляют очки: чем сложнее задача, тем она дороже. Участники должны находить и эксплуатировать уязвимости в веб-приложениях и бинарных сервисах, администрировать операционные системы, разбираться в криптографии, программировании и уметь много чего другого.

Второй вид CTF-соревнований — attack/defense. На старте команды получают одинаковое количество очков и выделенный сервер с ресурсами. Задача — взламывать серверы соперников и защищать свои. Чтобы доказать взлом, нужно украсть с чужого сервера флаг — их загружает туда подготовленная организаторами автоматизированная платформа, которая эмулирует поведение обычного пользователя.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Зачем участвуют в CTF

CTF-турниры популярны среди людей самого разного возраста — от старшеклассников и студентов первого курса до состоявшихся профессионалов.

И неудивительно — участие в CTF, кроме удовольствия, дает немало возможностей:

Как подготовиться

На каких площадках себя проверить

CTF-соревнования проходят каждую неделю, а то и чаще. Расписание турниров удобно отслеживать на сайте CTFtime. Здесь же можно зарегистрироваться.

Самое авторитетное соревнование — DEF CON CTF. Первый турнир серии был проведен на хакерской конференции без малого 30 лет назад и дал начало всем CTF. Чтобы попасть на DEF CON, нужно выстоять в жестком онлайн-этапе или выиграть одно из престижных международных соревнований — сейчас в мире 6 таких отборочных турниров.

С 2019-го официальным отборочным турниром DEF CON CTF стал CTFZone, который в этом году прошел в конце апреля онлайн. Среди участников были команды из России, Китая, Италии, США, Польши, Японии. Обладатели первых трех мест получили денежные призы, а победитель, которым стала команда mslc из нашей страны,— еще и место в финале DEF CON CTF.

Еще два крутых российских соревнования — RuCTF и Volga СTF. Они собирают команды со всего мира, но с одним условием: в отборочном турнире могут принять участие все, а в финале — только студенты и вчерашние выпускники.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Как получить максимум

Киберспортивное хобби может стать отличным источником профессионального опыта. Чтобы все удалось, попробуйте следующее:

1. Как следует подготовьтесь к CTF-турниру:

2. Зайдите на сайт CTFtime и выберите выходные, которые вы готовы просидеть за компьютером.

3. После соревнований обязательно посмотрите разборы заданий, которые вы пытались, но не смогли решить.

Источник

Как стать настоящим хакером или Capture The Flag

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Как правило, этот стиль CTF делится на подкатегории (они различаются в зависимости от того, кто ведет, но есть несколько констант, таких как криптография и анализ пакетов) и каждая подкатегория содержит набор задач, которые пользователь должен решить, чтобы найти флаг. Флаг обычно представляет собой строку текста, которую пользователь вводит в игровое поле, чтобы получить свои очки. Чем больше очков стоит задача, тем труднее ее решить.

7,5 часов, тарелка картошки, 2 ломтика пиццы и две таблетки аспирина, после чего я выключила свой компьютер, получив 3,250 очков и 6-е место. Я решила держаться категории, для которой у меня было достаточно навыков. Я закончила решение всех 7 задач по Network Forensics, 2 из 8 задач, связанных с Host Forensics, и 3 из 6 задач Crypto. Многие из этих задач я решила первой, либо была в первой тройке. Не так плохо для первого CTF.

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

Crypto

Стеганографическая задача

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Эта картинка выглядит абсолютно обычной? Но если мы посмотрим на командную строку:

Ничего особенного. давайте попробуем hexdump:

Оно возвращает кучу вывода, который я не буду вставлять сюда, но вот соответствующие биты:

Теперь мы знаем, что флаг находится в текстовом файле и по последней строке мы можем сказать, что в jpg есть скрытый файл.
Если мы попытаемся распаковать его:

Теперь у нас есть подсказка для пароля. Если мы попробуем использовать «wordshavepower» (слова на изображении):

Потрясающе! Давайте посмотрим с чем этот файл:

Cipher Challenge

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Другие задачи в этой категории требовали перевода из двоичной системы, Base64, Base32 или Base16 в ascii или дешифрирования файла, зашифрованного с помощью AES.

Host Forensics

Для решения задач, нужно было, чтобы игрок загрузил дамп MS Host и проанализировал его, а затем узнал имя запущенного вредоносного ПО и адрес, и порт C2 (Command & Control).

Я никогда не работала с аварийной дамп, но поиск в Google привел меня к Volatility и командам, которые мне нужно было запускать. (еще я нашла запись с другого CTF с похожим заданием).

Я начала с просмотра сетевых подключений в дампе. Так я знала, что, возможно, смогу определить соединение для ботнета C2.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Я заметила, что серверу был предоставлен странный внешний IP-адрес с несколькими исходящими соединениями. Я отфильтровала этот IP и начала искать подключения к нестандартному порту (в этом случае не к порту 80 или 433, потому что это веб-порты и обычно не используются для управления бот-сетью).

Из этого я поняла, что вредоносное ПО называется jrat.io и что это также флаг. Я начала работать в этой категории чуть позже в тот же день. Хотелось бы, чтобы у меня было больше времени, чтобы попытаться решить другие задачи, потому что я думаю, что смогла бы их решить. Две вышеперечисленные задачи стоили больше всего очков в категории Host Forensics.

Network Forensics

Я покажу сложную задачу. Нам пришлось загрузить файл pcap и единственным словом в его описании было «сломан».

Heartbleed

Глядя на pcap в Wireshark, я знала, что это будет атака с heartbleed из-за запросов и ответов, похожих на сердечный ритм. Я посмотрела, как работает heartbleed, и мне стало понятно, где искать. (Посмотрите графическое объяснение, которое я нашла)

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Если вы посмотрите heartbleed вывод и скопируете Payload как текст, то в итоге обнаружите:

Попробуйте

Интересны утилиты командной строки, которые я использовала?

Я выполнила большинство задач на Ubuntu 16.04 Digital Ocean Droplet.
Если вам особенно интересна разработка веб-приложений, то предлагаю попробовать WebGoat. Я использовала его, чтобы продемонстрировать атаки SQL Injection для презентации группе студентов, и его было довольно легко настроить и использовать.

Источник

Курс молодого бойца по CTF. Простые задания категории Web. Для самых маленьких

Вы спрашивали как научиться ломать? Мы отвечаем.

Мы уже писали о ресурсах, на которых ты можешь прокачать свои хакерские навыки. А теперь я расскажу тебе о том, как это делать на практике. Начнём с самых простых примеров.

Что важно знать и помнить?

Решение заданий на CTF-соревнованиях — это, по сути, решение некоторой загадки, зачастую не имеющей исключительго тренировочный характер. И даже если ты хорошо справляешься с такими заданиями (может быть даже лучше всех в мире), это не означает, что ты будешь лучше всех ломать реальные системы и находить уязвимости. Не стоит забывать, что все задания на тематических ресурсах и соревнованиях — имеют решение, то есть при их разработке уже продумывалось, что в них есть определённая уязвимость, которую необходимо найти и проэксплуатировать. В реальной жизни это зачастую не так, и это надо знать и помнить. Ресурсы с заданиями и решение задач позволяют «прокачать» свои навыки владения инструментами и не стандартного мышления, что крайне важно при взломе систем и поиске уязвимостей, но зацикливаться на решение «задачек» не нужно. Как говорят йоги — важна только практика.

Тем не менее, в этой статье мы рассмотрим самые простые задачки с известного сайта с различными задачами (CTF и не только) — https://www.root-me.org.

Потренируемся на простейших задачках из категории Web Server.

Пример 1.

Самое первое задание называется HTML. Из названия уже можно понять на что необходимо будет обратить внимание. Ссылка на условие задания: https://www.root-me.org/en/Challenges/Web-Server/HTML

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Нажимаем кнопку «Start the challenge» и попадаем на сайт.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Сразу откроем исходный код и смотрим его.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Ничего интересного, но если мы двинем ползунок влево, то увидим следующий закомментированный текст. В нём и будет наш пароль.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Обычно такие задания стоят одними из первых на различных не сложных соревнованиях, и их «стоимость» минимальна. Это задание обращает внимание на то, что иногда в комментариях к коду можно найти что-нибудь интересное, т.к. комментарии оставляют разработчики.

Пример 2.

По названию опять-таки понятно, на что необходимо обратить внимание.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Нажимаем на кнопку «Start the challenge» и попадаем на так называемую «Базовую аутентификацию».

Попробуем ввести одну из самых простых и популярных комбинаций логина и пароля: «admin/admin». И получим сообщение о верном решении задания и о том, что введённый нами пароль «admin» можно использовать в качестве ответа на задание.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Задания такого рода иногда встречаются на CTF-cоревнованиях. Смысл таких заданий заключается в том, чтобы показать, что в форме логина может и не быть уязвимостей, однако администраторы могут использовать слабые или стандартные пароли для входа в систему. Часто во время проведения пентестов происходит брутфорс (полный перебор) паролей по словарю популярных паролей. Однако в CTF’ax брутфорс используется редко, т.к. это не особо интересно и затратно.

Пример 3.

Следующее задание, которые мы решим называется «User-agent». Из его названия опять понятно, на что нужно обратить внимание.

Нажимаем на «Start the challenge» и видим следующее сообщение.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

«user-agent» — это одно из полей HTTP-запроса, которое отвечает за описание браузера с которого происходит обращение к ресурсу. Изменим запрос с помощью инструментов разработчика (они открываются в разных браузерах по разному, но обычно достаточно нажать ПКМ на странице и выбрать опцию «Исследовать элемент», после откроется меню и там нужно выбрать категорию «Сеть», если у вас английская версия браузера, то у вас будет «Inspect elements» и «Network» соответственно, после находим запрос, изменяем его и отправляем. Меняем мы только User-Agent)

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Смотрим ответ (он будет в самом низу списка запросов)

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Данное задание нацелено на основы работы с HTTP-заголовками. Задания такого рода очень часто встречаются на CTF’ах, при этом могут использоваться различные HTTP-заголовки, даже самые редкие, поэтому стоит знать хотя-бы самые базовые.

Пример 4.

Решим задание «Backup file». Из названия видно, что речь пойдёт про бекапы (бекап — резервная копия каких либо данных для экстренных случаев).

Приступаем к заданию и попадаем на форму ввода логина и пароля.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Данное задание по большей части основано на некотором прямом знании, нежели логики и рассуждениям. При создании бекапа часто делается просто копия объекта, однако его наименование нужно немного изменить, для этого могут добавляться различные символы в конец файла (например, чтобы убрать расширение *.php, для того, чтобы файл не исполнялся при обращении к нему).

Можно попробовать скачать файлы, которые потенциально могут быть на сервере. Например, файлы со следующими названиями:

При указании в адресной строке последнего названия (index.php

) произойдёт скачивание файла с исходным кодом.

Открыв данный файл в текстовом редакторе получим исходный код (в том числе и серверную часть) обработчика формы.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

И получаем пароль для подтверждения решения данного задания.

Данное задание по большей части зацикливается на некотором прямом знание того, что на серверы могут быть забыты/оставлены бекапы важных файлов.

Пример 5.

Решим ещё одно задание. Название — «HTTP directory indexing». Судя по названию, задание нацелено на индексацию директорий на веб-сервере.

Приступаем к заданию и попадаем на следующее веб-приложение.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Никаких видимых подсказок нет, по этому посмотрим исходный код.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

В исходном коде видим, что подключается некоторый файл из локальной папки admin. Так как в названии задание сказано про индексацию, попробуем просто зайти в папку admin.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Отлично, она индексируется (мы видим её содержимое). В данной папке находится файл (который и подключается к предыдущей страничке) и папку. Зайдём в папку и посмотрим её содержимое.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Видим некоторый текстовый файл «admin.txt». Попробуем открыть его.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Это задание акцентирует внимание на таком свойстве, как индексация. Смысл индексации заключается в том, что перед вам предстаёт по сути папка с файлами и другими папками и всё это находится на сервере. Не редкость, когда про индексацию забывают в важных местах веб-приложения, и таким образом любой желающий может получить доступ к конфиденциальным файлам или исходным кодам.

Пример 6.

Решим задание «Command injection».

Из описания и названия берём самое важно и получаем, что речь пойдёт об «внедрении команд», пароль хранится в файле index.php

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Заходим на сайт и видим следующую форму.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

В описании задания было сказано, что это сервис, предназначенный для пинга. Предположим, что пинг реализуется с помощью системной функции и фильтрация вводимых данных — отсутствует. Данная уязвимость относится к классу RCE, описание уязвимости уже было на канале и пример был практически такой-же. Вот ссылки на описание RCE:

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Подаём на вход следующую строку «; cat index.php», суть которой заключается в том, что мы закрываем команду ping и добавляем ещё одну команду, которая прочитает файл index.php и отобразит его.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

После выполнения будет отображено 2 формы ввода — это нормально, так как мы прочитали файл и отобразили его, а он содержит не только php-код но и html-код, который повторно отображается. Нам нужно открыть исходный код.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Видим серверную часть кода, в которой и расположен наш флаг/пароль для решения задания.

Пример 7.

Решим задание «PHP filters».

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

По заданию нам надо получить пароль администратора, обратим внимание на название задания, а также на прикреплённые источники.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Много ссылок на LFI.

Заходим на само задание и видим две ссылки.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Прейдём на login и обратим внимание на строку запроса.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Внимание сразу привлекает параметр «inc» который принимает в качестве значения название скрипта. Похоже на LFI. Только есть проблема, судя по всему данный файл «выполняется», то есть содержащийся в нём php-код выполняется на сервере при загрузке данного файла, то есть по сути файл подгружен, но полный его исходный код не увидеть.

Для решения этой проблемы можно закодировать вывод этого файла в base64 для этого и используются php-фильтры.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Мы получаем большой вывод base64, декодируем его.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Декодируем полученный base64 и получаем ответ.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Задание решено. Оно оказалось не сложным и довольно хорошо демонстрирует базовую концепцию уязвимости LFI с использованием php-фильтров.

Пример 8.

Решим задание «HTTP verb tampering».

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Итак по заданию не особо понятно, что надо сделать, но если перейти по ссылке и начать решение, то станет ясно, что нужно обойти базовую аутентификацию.

Попробуем реализовать данную атаку с помощью Burp Suite.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Требует авторизироваться. Меняет тип запроса на PUT.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Получаем ответ. Задание решено.

Пример 9.

Решим задание «HTTP — Open redirect».

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Судя по описанию, нам необходимо совершить переход на другой домен, кроме предложенных.

Зайдём на сайт с заданием.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

При нажатии на одну из ссылок получаем такой запрос.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Видим, что в параметре url передаётся адрес, по которому будет осуществлён переход. А в параметре h передаётся какой-то хеш, по формату похожий на md5. Правда, не ясно от чего он, поэтому попробуем найти его в базе.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Получается, что это хеш от адреса.

Поменяем адрес на другой и запишем хеш от него в запрос.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Получаем флаг. Задание решено.

Пример 10.

Решим задание HTTP/POST.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Судя по всему речь пойдёт об HTTP-методе POST. Нам надо найти путь получения топовых очков (судя по всему максимальных).

Перейдём по ссылке для начала решения задания.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Видим некоторую игру. В которой мы можем нажимать на кнопку и получать случайный результат. Необходимо, чтобы случайный результат был равен максимальному — 999999.

В задании указывалось что-то про методы, подключим Burp Suite и посмотрим какие запросы идут на сервер.

При нажатии на кнопку отправляется следующий запрос.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Видим, что число в параметре score отображается после запроса на странице и получается, что мы можем его контролировать. Давайте заменим его на максимальное + 1.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Всё верно, мы победили в игру и получили флаг. Задание решено.

Данное задание демонстрирует основы отправки изменяющих запросов на сервер и показывает, что вы можете изменять отправляемые значения в надежде на изменение результата ответа от сервера.

Пример 11.

Решим задание — «Improper redirect»

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Задание связано с редиректом, нужно получить доступ к index.

Попробуем перейти по ссылке.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

При любом обращении к index.php попадаем на login.php?redirect

Попробуем обратится к index.php и перехватим запрос с помощью Burp Suite и отправим запрос в Repeater.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Теперь просто отправим данный запрос и если будет происходит редирект мы увидим это и пока не нажмём на кнопку принятия он не произойдёт.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Отлично, мы получили флаг и указание на данную проблему безопасности (CWE-698) и небольшое описание в чём заключается её смысл.

Вот такое простое задание, демонстрирующее возможные проблемы при плохой реализации редиректа.

Пример 12.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Зайдём на сайт и увидим, следующее.

Как можно заметить, это действительно похоже на фото-галерею, но это не самое интересное. Мы видим вкладку «upload» в небольшом меню. Давайте попробуем перейти в неё и загрузить какой нибудь файл.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Итак, мы видим, что можно загружать свои фотографии, однако они должны быть строго определённого формата.

Попробуем один из самых простых способов обхода данного фильтра, а именно «файл с двойным расширением».

Создадим такой файл.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Всё дело в том, что при загрузке файл будет распознавать по последнему расширению (то есть как изображение), а при обращении к файлу, сервер попытается изначально открыть его по первому найденному расширению (если это не запрещено в настройках сервера), то есть по расширению «.php».

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

После отправки этого запроса, получаем результат загрузки файла.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Файл успешно загружен, его тип определился как изображение, а также нам показали путь по которому файл сохранён. Попробуем перейти по нему.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Отлично, мы можем выполнять код на сервере. Теперь просто прочитаем необходимый файл.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

И получаем наш пароль. Проверим его.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Пример 13.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Задание снова по загрузке шелла. На этот раз речь (судя по названию) нужно обойти MIME type.

Перейдём на сайт и посмотрим, что нам предлагают.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Есть опция загрузки. Посмотрим как она выглядит.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Не отличается от прошлого задания. Попробуем загрузить шелл, используемый в прошлом решении.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Загрузка прошла, однако немного неясно, где был сохранён файл. Поищем его.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Если обновить страницу загрузки, то можно увидеть ссылку на загруженный ранее файл. Попробуем обратиться к нему.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Запрос выглядит так (поле Content-Type изменяется в процессе запроса с помощь перехвата его в Burp’e).

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Файл загружен. Отлично, проверим его.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Всё верно, код отрабатывает. Сделаем «ls», чтобы показать, что сейчас загружено 2 файла и просто прочитаем флаг.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Пароль получен. Задание решено.

Пример 14.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Исходя из описания и названия задания речь пойдёт про куки и скорее всего про их подмену. Перейдём по ссылке (кнопка Start the challenge) и посмотрим, что нам предлагают.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Какая-то форма сохранения email’ов и просмотр сохранённых почт. Попробуем нажать на просмотр почт.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Видим, что нам выдало сообщение о том, что мы не администратор, а также установился некоторый параметр «c» со значением «visiteur». Попробуем поменять его на admin.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Теперь видим, что проблема состоит в куки. Посмотрим на запросы к серверу с помощью Burp Suite.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Видим, что на сервер передаётся некоторая куки переменная ch7 со значением «visiteur», попробуем подменить её на admin.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

И получим верный пароль. Ниже представлен запрос в Repeater’e.

что нужно знать для ctf. Смотреть фото что нужно знать для ctf. Смотреть картинку что нужно знать для ctf. Картинка про что нужно знать для ctf. Фото что нужно знать для ctf

Вот такой простой пример подмены куки для получения доступа к другому аккаунта. Данная уязвимость имеет место быть в достаточно плохих веб-проектах, где разработчики совсем не заботяться о безопасности и разграничении доступа у пользователей.

На канале вы можете найти ещё множество подобных постов не только для веб-приложений, но и для бинарных приложений.

Ты спрашивал — мы рассказываем. Это самые простые задачки. Более сложные — впереди.

Админ сайта. Публикует интересные статьи с других ресурсов, либо их переводы. Если есть настроение, бывает, что пишет и что-то своё.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *