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

Пробуем авторизоваться, создать пасту, всё работает, начинаем искать уязвимость.
Для начала обратим внимание, на интересную механику генерации ников, каждый новый юзер получает ник "HypeUser_N", где N - порядковый номер зарегистрированного юзера.

Думаем, как можно это использовать... Придумали? Вот и я тоже не придумал.
Едем дальше, вспоминаем про ограничение в 140 символов:

Думаем, как можно это использовать... Придумали? Вот и я тоже не придумал.
Далее, замечаем интересную деталь, когда мы кликаем по созданной пасте, нас перенаправляет на ссылку ввида /paste/<base64>, где <base64>, какой-то base64, пробуем раздекодить. Так-как это base64 используется в url, значит некоторые символы, типа / и + в нем заменяются, поэтому декодим через Base64URL декодер.
Для заметки с названием lol и содержимым kek, получаем такое:

Очевидно, это какие-то байты, крутим их вертим, ничего адекватного не получаем. Опять не то(((
Проехали, заглянем в куки, увидим интересный кук auth, равный чему-то в base64 с точками. Тут либо знаем, либо гуглим и узнаём, что это JWT.
Кидаем этот JWT токен в декодер jwt.io:

Видим интересное, в jwt токене хранится id юзера, пробуем его поменять на, например, "id": 1, кодируем, вставляем в куку и вуаля... Нас выбрасывает на страницу авторизации.
Пытаемся выяснить, что же не так, читаем про структуру JWT, узнаем что оказывается, точками разделяются части токена, первая часть - метаданные о используемом алгоритме и типе токена, вторая - содержимое, третья - подпись токена, использующаяся для подтверждения подлинности.
Обращаем внимание на последнюю часть, на подпись. Узнаем, что HS256 - это HMAC-SHA256, алгоритм генерации подписи с помощью секретного ключа.
На jwt.io замечаем поле VERIFY SIGNATURE, в котором написано каким образом генерируется подпись:

Понимаем, что для того что-бы подменить токен, нам нужно знать secret. Гуглим, пытаемся узнать, как его можно вычислить, находим статью типа такой, в которой узнаем, что hashcat умеет ломать jwt. Можем попробовать использовать брутфорс в лоб из статьи, но вскоре мы поймем, что это не работает, поэтому гуглим дальше и узнаем о том, что hashcat умеет в атаку по словарю. Гуглим словарь популярных jwt секретов, либо популярных паролей.
Можно было использовать всем известный rockyou.txt, либо jwt.secrets.list(первая строчка при запросе jwt secrets).
Запускаем хэшкэт(команда есть на скрине) и достаточно быстр взламываем секрет(у меня заняло меньше секунды):

Красная стрелка указывает на подобранный секрет.
Далее, вставляем этот секрет в поле your-256-bit-secret с сайта jwt.io и подменяем id на 1. Вставляем сгенерированный JWT в куку auth, получаем доступ к первому юзеру и находим у него пасту с названием NE FLAG, открываем её, получаем флаг.

flag: surctf_jwt_is_rly_hyped_th1ng_swagXD