Skip to content

Latest commit

 

History

History

the-matrix

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

Crypto | The Matrix

Информация

Наши агенты узнали, что кто-то из руководства Arbalests of Siberia прячет свои активы в виртуальной реальности.

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

Раньше никому не удавалось обойти защиту виртуальной реальности, но вы справитесь.

Вы же смотрели «Матрицу»? Представьте, что вы Нео! Устройте революцию! Станьте новым Архитектором!

nc host 40518

Описание

Сервис — это подобие ролевой игры по мотивам Матрицы, в которой можно создать персонажа, менять его имя, говорить с Оракулом и сражаться с Архитектором. Последние два пункта доступны только "хакерам" — персонажам с именами neo, trinity, morpheus, которые недоступны для изменения.

Оракул задаёт вопросы, Архитектор отвечает на них. Чтобы победить Архитектора, нужно научиться отвечать на вопросы Оракула так же, как настоящий Архитектор, тогда напечатается флаг.

Можно сколько угодно раз менять имя и брать новые вопросы у Оракула. Для победы над Архитектором есть всего три попытки, после чего игра сбрасывается.

Имя подписывается с помощью DSA.

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

Архитектор содержит внутри себя полином с неизвестными коэффициентами, а его ответы — это просто значения полинома в точках.

Решение

Чтобы получить флаг, нужно выполнить три пункта:

  1. подделать DSA, чтобы стать хакером
  2. восстановить состояние LCG Оракула, чтобы предсказывать вопросы Архитектору
  3. восстановить полином внутри Архитектора, чтобы отвечать на вопросы

Баг в DSA — некорректная генерация k, который должен быть случайным. Мы знаем его старшие биты и можем восстановить полностью, получив несколько сигнатур.

Множитель LCG можно восстановить по частичному выводу, а затем восстановить и само состояние.

Коэффициенты полинома можно восстановить по двум выводам, используя алгоритм LLL.

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

Пример решения

Флаг

Cup{c0ngr4tu14tI0n5_y0u_t00k_c0ntR01_0f_7h3_m4tR1x}