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

38 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<h1 align="center">Tollgate IIS</h1>
<p align="center">
<img src="https://img.shields.io/badge/category-Reverse-blueviolet" alt="Reverse"/>
<img src="https://img.shields.io/badge/difficulty-medium-orange" alt="medium"/>
</p>
В раздатке есть 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` и повторяем расшифровку:
```bash
openssl enc -d -aes-128-cbc \
-K 31415926535897932384626433832795 \
-iv 27182818284590452353602874713526 \
-nosalt -A -base64 -in routes.b64
```
Получаем JSON с флагом в поле `handler`. В живом приложении `OnBeginRequest` вызывает `Decode()` для пути с `seo`, но для статического разбора достаточно данных из DLL.
[Солвер](solve/solve.py).
## Флаг
`caplag{machine_key_revealed_the_hidden_handler}`