0Pricing
Cyber Security Academy · Урок

Веб-задачи и криптографические задачи

Решение распространённых веб- и криптографических головоломок

«Веб-задачи и криптографические задачи» — бесплатный урок Cyber Security Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cyber Security Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cyber Security Academy содержит 4 уроков всего.

Два столпа: веб и криптография

Веб и криптография — две самые распространённые точки входа в CTF.

  • Веб-задачи предоставляют Вам работающее веб-приложение и предлагают найти ошибку в его работе с данными, аутентификацией или доверием.
  • Криптографические задачи предоставляют шифротекст, схему и иногда исходный код и предлагают восстановить открытый текст или ключ, используя ошибку в применении криптографии.

Обе категории требуют систематического наблюдения. В этом уроке рассматриваются повторяющиеся типы задач каждой категории.

Первый шаг при работе с веб-целью

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

# Inspect raw response headers and body
curl -i http://target/

# Look for hidden paths the UI does not link to
gobuster dir -u http://target/ -w wordlist.txt

# Common files worth checking by hand
# /robots.txt  /.git/  /backup.zip  /admin

Внедрение кода в запросы базы данных

Внедрение кода в запросы базы данных происходит, когда пользовательские данные объединяются с запросом к базе данных без разделения кода и данных.

Форму входа, которая строит запрос вроде SELECT * FROM users WHERE name='INPUT', можно обмануть, передав данные, которые закрывают строку и изменяют логику:

# A classic auth-bypass payload supplied as the username
' OR '1'='1' -- 

# UNION-based extraction once the column count is known
' UNION SELECT username, password FROM users -- 

Настоящее исправление внедрения кода

CTF учит Вас взламывать внедрение кода, чтобы Вы могли защищать приложения от него. Правильная защита — это параметризованные запросы (подготовленные запросы), которые полностью исключают пользовательские данные из структуры запроса.

# Vulnerable: input becomes part of the SQL text
query = "SELECT * FROM users WHERE name='" + name + "'"

# Safe: input is bound as a parameter, never parsed as SQL
cursor.execute("SELECT * FROM users WHERE name = ?", (name,))

Межсайтовый скриптинг (XSS)

XSS возникает, когда приложение отражает или сохраняет данные, контролируемые злоумышленником, а браузер выполняет их как сценарий. В CTF задача на XSS часто связана с ботом, который посещает страницу с Вашей полезной нагрузкой, сохраняя флаг в файле cookie.

  • Отражённый — полезная нагрузка из запроса сразу возвращается в ответе.
  • Сохранённый — полезная нагрузка сохраняется и выполняется при последующих посещениях.
  • На основе DOM — клиентский JavaScript небезопасно записывает данные на страницу.

Защита заключается в контекстном кодировании выводимых данных и политике безопасности содержимого. Проверочная строка вроде <script>alert(1)</script> подтверждает, экранируются ли данные.

SSRF и обход каталогов

Ещё два основных типа веб-задач:

  • Подделка запросов на стороне сервера (SSRF) — Вы заставляете сервер отправлять запросы от Вашего имени, часто к адресам, доступным только из внутренней сети, например http://127.0.0.1, или к конечной точке метаданных облака, чтобы добраться до флага.
  • Обход каталогов — Вы выходите из предназначенного каталога с помощью последовательностей вроде ../, чтобы читать файлы за пределами корневого каталога веб-сайта, например ../../../../etc/passwd.

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

Кодирование — не шифрование

Самая распространённая криптографическая ловушка для новичков — путать кодирование с шифрованием. Кодирование обратимо для любого человека и не требует ключа, поэтому оно совершенно не обеспечивает конфиденциальность.

Научитесь сразу распознавать форматы:

  • Base64 — буквы, цифры, + / и часто дополнение =.
  • Шестнадцатеричная запись — только 0-9 a-f.
  • ROT13 / шифр Цезаря — узнаваемая структура со сдвинутыми буквами.
# Decode base64
echo 'ZmxhZ3toZWxsb30=' | base64 -d

# Decode hex
echo '666c6167' | xxd -r -p

Классические шифры и XOR

Во многих криптографических задачах используются слабые исторические шифры или небрежно реализованные современные:

  • Шифры Цезаря / Виженера — шифры со сдвигом, взламываемые частотным анализом или перебором всех 25 сдвигов.
  • XOR с одним байтом — всё сообщение обрабатывается операцией XOR с одним байтом; переберите все 256 ключей и выберите читаемый результат.
  • XOR с повторяющимся ключом — взламывается после определения длины ключа, затем каждый байт ключа решается как отдельный XOR с одним байтом.

Вывод таков: самодельный или классический шифр не обеспечивает настоящей защиты от аналитика.

Ошибки применения RSA

RSA безопасен только при правильном выборе параметров. В криптографических задачах CTF часто встречаются сломанные варианты:

  • Маленький модуль — если n достаточно мал, его можно разложить на множители напрямую и восстановить закрытый ключ.
  • Крошечная степень без дополнения — при e=3 и коротком сообщении шифротекст может оказаться точным кубом, который можно восстановить с помощью целочисленного кубического корня.
  • Общие множители — если два открытых ключа имеют общий простой множитель, наибольший общий делитель их модулей мгновенно раскрывает его.

Защита в реальном мире: используйте проверенную библиотеку с большими ключами и правильным дополнением (OAEP), никогда не разрабатывайте собственную криптографию.

Взлом хешей

Если в задаче Вам дают хеш пароля, цель — восстановить исходные данные. Хеш нельзя обратить, но можно перебирать варианты и сравнивать результаты.

# Identify the hash type first
hashid 5f4dcc3b5aa765d61d8327deb882cf99

# Dictionary attack with hashcat (mode 0 = raw MD5)
hashcat -m 0 hash.txt rockyou.txt

# John the Ripper alternative
john --wordlist=rockyou.txt hash.txt

Повторяемый рабочий процесс

Объедините всё единым циклом, подходящим для обеих категорий:

  • Наблюдайте — прочитайте условие, просмотрите исходный код, определите кодировку или схему.
  • Выдвигайте гипотезу — определите наиболее вероятный класс уязвимости.
  • Проверьте на простом примере — отправьте одну пробную нагрузку и изучите точный ответ.
  • Эксплуатируйте — развейте сработавшую пробную нагрузку в полноценную, которая выдаст флаг.
  • Документируйте — записывайте нагрузку и ход рассуждений, пока всё свежо в памяти.

Этот цикл не даёт Вам заблудиться в бесплодных поисках и почти автоматически приводит к готовому отчёту о решении.

Быстрая проверка

Проверьте, насколько хорошо Вы усвоили основы веб-безопасности и криптографии.

Повторение

Вы изучили распространённые задачи по веб-безопасности и криптографии:

  • Веб: сначала составьте карту приложения, затем ищите SQL-инъекции, XSS, SSRF и обход путей — все эти уязвимости возникают из-за небезопасного доверия к пользовательскому вводу, а устраняются разделением кода и данных.
  • Криптография: отличайте кодирование от шифрования, взламывайте слабые классические шифры и шифры XOR, используйте ошибки в параметрах RSA и взламывайте хеши с помощью словарей.
  • Один и тот же цикл — наблюдать, выдвигать гипотезу, проверять, эксплуатировать, документировать — подходит для обеих областей.

Далее Вы перейдёте к реверс-инжинирингу и эксплуатации бинарных файлов.

Часто задаваемые вопросы

Урок «Веб-задачи и криптографические задачи» бесплатный?

Да — полный текст урока «Веб-задачи и криптографические задачи» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cyber Security Academy, подпишись на CoddyKit PRO. Курс Cyber Security Academy содержит 4 уроков всего.

Чему я научусь в уроке «Веб-задачи и криптографические задачи»?

Решение распространённых веб- и криптографических головоломок Ты практикуешь Cyber Security Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cyber Security Academy?

Предыдущий опыт не требуется. Cyber Security Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Веб-задачи и криптографические задачи»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cyber Security Academy?

Да. Каждый урок Cyber Security Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Категории CTF и образ мышления
  2. Веб-задачи и криптографические задачи
  3. Основы реверс-инжиниринга и эксплуатации бинарных файлов
  4. Инструменты и отчёты о решениях
← Назад к Cyber Security Academy