← Все комнаты Путь «Веб» →
СреднийВеб Флаг Осенний CTF

Слабый JWT

Прогресс комнаты 0 / 4
Задание 1Введение

Цель: Устройство JWT и подбор слабого секрета подписи.

Сайт подписывает сессии JWT (HS256). Разработчик взял секрет из списка популярных паролей. Найдите секрет — и сможете подделать токен админа. Флаг — CTF{секрет}.

Задание 2Теория и инструменты

JWT состоит из трёх частей base64url через точку: заголовок, полезная нагрузка, подпись. Для HS256 подпись = HMAC-SHA256(секрет, header + '.' + payload).

Если секрет — словарное слово, его подбирают офлайн: вычисляют подпись для каждого слова и сравнивают. Зная секрет, можно подписать любой токен, например с role: admin.

Инструменты

  • Python: hmac, hashlib.sha256, base64.urlsafe_b64encode
  • jwt.io — посмотреть содержимое токена
  • hashcat режим 16500

Больше теории — в разделе «Обучение: Веб».

Задание 3Практика: найдите флаг
Данные задания328 символов
token = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiZ3Vlc3QiLCJyb2xlIjoidXNlciIsImlhdCI6MTc2MDgzMjAwMH0.zHa0NDBBUfzZ_Y0cH5q61QokxJZpGGhoGPesQ8X9SO8

wordlist.txt:
123456
letmein
dragon
monkey
sunshine
shadow
master
freedom
whatever
trustno1
princess
starwars
superman
hunter2
batman
access
welcome
football
matrix
cyberpunk
Войдите, чтобы ответить

Пошаговый план — открывайте по одному шагу

  1. 1
    Разделите токен на три части по точке.

Подсказки — каждая до решения стоит −25 очков

Задание 4Как защититься

Секрет HS256 — минимум 256 случайных бит (secrets.token_hex(32)), либо асимметричные алгоритмы (RS256/EdDSA).

Разборы участников

Разборы открываются после того, как вы решите комнату, — чтобы не спойлерить ответ.