# Как начать участие в Ctf?

Аноним Автор

За последние две недели я рассмотрел две проблемы с DEFCON 22 CTF: "shitsco" и "nonameyet". Спасибо за все комментарии и вопросы. Самый популярный вопрос, который я получил, был "как я могу начать в CTF?". Не так давно я задавал себе тот же вопрос, поэтому я хотел предоставить некоторые возможности для тех из вас, кто заинтересован в участии в CTF. Самый простой способ начать - подписаться на легкий CTF вроде CSAW, Pico CTF, Microcorruption и любой другой из доступных. Благодаря практике, терпению и самоотверженности ваши навыки со временем станут лучше.


Если вам интересно узнать как решать те или иные задачи, то большинство соревнований CTF имеет архив решенных проблем где-то. Задачи, как правило, имеют широкий спектр уровней сложности. Будьте осторожны, выбирая самые простые проблемы. Сложность субъективна и зависит от вашего набора навыков. Если ваша сильная сторона - криминалистика, но вы не владеете криптографией, то очки за задачи в криминалистике будут казаться завышенными, а криптографические задачи будут казаться недооцененными. Та же самая особенность восприятия справедлива и для организаторов CTF. Это одна из причин почему так сложно оценивать задачи CTF.


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


1). Реверс-инжиниринг. Я настоятельно советую установить себе IDA Pro. Существует бесплатная версия, а также профессиональная версия для студентов. Попробуйте какие-либо упражнения crackme. Напишите собственный код на С, а затем реверсите скомпилированную версию. Повторите этот процесс при изменении параметра компилятора и логики программы. Как оператора if отличается от оператора select в вашем скомпилированном двоичном файле? Я предлагаю вам изначально сосредоточиться на одной архитектуре: x86, x86_64 или ARM. Прочитай руководство для процесса из этого списка. Список рекомендаций включает в себя:


- Practical Reverse Engineering

- Reversing: Secrets of Reverse Engineering

- The IDA Pro Book


2). Криптография. Хотя это не моя сильная сторона, вот некоторые ресурсы для изучения:


Applied Cryptography

Practical Cryptography

Cryptography I


3). Программирование. Выберите язык высокого уровня. Я рекомендую Python или Ruby. Для Python прочитайте Dive into Python (бесплатно) и найдите проект, в котором хотите участвовать. Стоит отметить, что Metasploit написан на Ruby. Классы информатики, где изучают алгоритмы и структуры данных, также подойдут в этом направлении. Посмотрите на решенные проблемы программирования на CTF и выполните их. Сосредоточьтесь на создании рабочего решения, а не самого быстрого или элегантного, особенно если вы начинающий.


4). Веб-уязвимости. Существует много технологий веб-программирования. Наиболее популярными в CTF, как правило, являются PHP и SQL. Сайт php.net - это фантастический справочник по языку. Просто найдите любую интересующую вас функцию. После PHP следующим наиболее распространенным способом решения задач является Python или Ruby. Обратите внимание на совпадение навыков? Существует хорошая книга по веб-уязвимостям под названием The Web Application Hacker's Handbook. Помимо этого. изучив некоторые из этих методов, вы можете подумать о получении опыта с некоторыми популярными бесплатными инструментами. Они иногда полезны в соревнованиях CTF. Эта категория также частично пересекается с криптографией.


5). Двоичные упражнения. Это мой личный фаворит. Я рекомендую вам поучиться реверс-инжинирингу до того как вникать в двоичные упражнения. Существует несколько распространенных типов уязвимостей, которые можно изучить изолированно: переполнение стека, ппереполнение кучи и ошибки форматирования строк для новичков. Во многом это тренирует ум распознавать уязвимые паттерны. Взгляд на прошлые уязвимости - отличный способ изучить эти паттерны. Вы должны прочитать:


- Hacking: The Art of Exploitation

- The Shellcoders Handbook

- The Art of Software Security Assessment


6). Форензика/Сети. У многих команд CTF, как правило есть эксперт по форензике. Я не из тех парней, но я предлагаю вам узнать как использовать редактор 010 hex и не бойтесь делать абсурдные, дикие, случайные догадки о том, что может находиться в этих проблемах.


Наконец, Дэн Гвидо и компания недавно выпустили руководство по CTF, которое является отличным введением в некоторые из этих тем.