Files
Serdtse-Sysoly/finals/tollgate-iis-dotnet-reverse-medium/WRITEUP.md
T
2026-09-17 00:50:07 +03:00

1.9 KiB
Raw Blame History

Tollgate IIS

Reverse medium

В раздатке есть IIS-модуль TollgateIis.dll. Он переписывает маршруты и скрывает дополнительный обработчик в зашифрованной таблице. Разбираем .NET-сборку в ILSpy или dnSpy.

Решение

В классе RouteModule находим Decode() и три строки, из которых он собирает таблицу:

Поле Значение и роль
ValidationKey 31415926535897932384626433832795 — ключ AES
DecryptionKey 27182818284590452353602874713526 — IV
RouteTable ROUTEv3:<base64> — зашифрованный JSON

Названия ключей немного сбивают с толку, поэтому по коду Decode() определяем, что используется AES-128-CBC. Каждая hex-строка превращается в 16 байт, а у таблицы перед base64-декодированием отрезается ROUTEv3:.

Сохраняем base64-тело таблицы без префикса ROUTEv3: одной строкой в routes.b64 и повторяем расшифровку:

openssl enc -d -aes-128-cbc \
  -K 31415926535897932384626433832795 \
  -iv 27182818284590452353602874713526 \
  -nosalt -A -base64 -in routes.b64

Получаем JSON с флагом в поле handler. В живом приложении OnBeginRequest вызывает Decode() для пути с seo, но для статического разбора достаточно данных из DLL.

Солвер.

Флаг

caplag{machine_key_revealed_the_hidden_handler}