1.9 KiB
Tollgate IIS
В раздатке есть 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}