102 lines
7.3 KiB
Markdown
102 lines
7.3 KiB
Markdown
<h1 align="center">Сердце Сысолы</h1>
|
||
|
||
<p align="center"><i>Финальный этап · writeups</i></p>
|
||
|
||
<p align="center">
|
||
<img src="https://img.shields.io/badge/writeups-27-blue" alt="writeups: 27"/>
|
||
<img src="https://img.shields.io/badge/categories-7-orange" alt="categories: 7"/>
|
||
</p>
|
||
|
||
[Оба этапа](../README.md)
|
||
|
||
## Задания
|
||
|
||
<details>
|
||
<summary><b>Crypto</b> · 2 разбора</summary>
|
||
|
||
| Сложность | Таск | Описание |
|
||
|---|---|---|
|
||
|  | [NullRoute KEM](nullroute-kem-crypto-easy/WRITEUP.md) | Открываем отклонённую KEM-капсулу с общедоступным fallback-секретом. |
|
||
|  | [ScalarAlias](scalaralias-crypto-easy/WRITEUP.md) | Меняем скаляр подписи на эквивалентный и получаем ключ экспорта. |
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>Forensic</b> · 2 разбора</summary>
|
||
|
||
| Сложность | Таск | Описание |
|
||
|---|---|---|
|
||
|  | [Admission Drift](admission-drift-forensic-medium/WRITEUP.md) | Связываем прямой AdmissionReview, procfd и успешное чтение секрета. |
|
||
|  | [Grant Residue](grant-residue-forensic-medium/WRITEUP.md) | Прослеживаем device code phishing от кода на станции до Graph-экспорта. |
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>PWN</b> · 7 разборов</summary>
|
||
|
||
| Сложность | Таск | Описание |
|
||
|---|---|---|
|
||
|  | [ProxyRewrite](proxyrewrite-pwn-medium/WRITEUP.md) | Длинной заменой URL переписываем маршрут и поле диагностики. |
|
||
|  | [PulseWidth](pulsewidth-pwn-easy/WRITEUP.md) | Обходим проверку длины через uint8_t и переписываем права сессии. |
|
||
|  | [RailAnnot](railannot-pwn-medium/WRITEUP.md) | Переполняем refcount и подменяем аннотацию через use-after-free. |
|
||
|  | [RawForge X3F](rawforge-x3f-pwn-hard/WRITEUP.md) | Переполняем произведение размеров RAW и затираем поля задания samples-данными. |
|
||
|  | [RegexScope](regexscope-pwn-easy/WRITEUP.md) | Восстанавливаем случайный токен побайтовым оракулом чтения за границей. |
|
||
|  | [SortKey Station](sortkey-station-pwn-easy/WRITEUP.md) | Знаковым смещением направляем проверку ключа на строку допуска в профиле. |
|
||
|  | [ZCRX Broker](zcrx-broker-pwn-hard/WRITEUP.md) | Двойным возвратом блока перекрываем capability и меняем закодированный handler. |
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>Reverse</b> · 5 разборов</summary>
|
||
|
||
| Сложность | Таск | Описание |
|
||
|---|---|---|
|
||
|  | [Orchid Wallet](orchid-wallet-ios-reverse-medium/WRITEUP.md) | Связываем конфиг в Mach-O с ключом из provisioning profile. |
|
||
|  | [PYZ Sidecar](pyzsidecar-python-reverse-easy/WRITEUP.md) | Распаковываем боковой блок Python-байткода и собираем флаг. |
|
||
|  | [Tollgate IIS](tollgate-iis-dotnet-reverse-medium/WRITEUP.md) | Расшифровываем таблицу маршрутов AES-ключом из IIS-модуля. |
|
||
|  | [WasmCoat](wasmcoat-android-reverse-medium/WRITEUP.md) | Разбираем custom section wasm и снимаем XOR ключом из DEX. |
|
||
|  | [Wheelhouse Beacon](wheelhouse-beacon-python-reverse-hard/WRITEUP.md) | По RECORD находим LZMA-стадию и извлекаем константы байткода. |
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>Stego</b> · 4 разбора</summary>
|
||
|
||
| Сложность | Таск | Описание |
|
||
|---|---|---|
|
||
| — | [В глазах всё написано](kot1/WRITEUP.md) | Читаем полубайты из перестановок пикселей в блоках 2 × 2. |
|
||
| — | [Мы снова пришли к носу](kot5/WRITEUP.md) | Из PNG извлекаем PCAPNG и исполняем скрытую сцену, чтобы найти нос. |
|
||
| — | [Он немного изменился](kot4/WRITEUP.md) | По встроенному оригиналу восстанавливаем сетку и читаем направления сдвигов. |
|
||
| — | [У него есть прошлое](kot2/WRITEUP.md) | Восстанавливаем записку из CatFS по снимку и зафиксированным транзакциям. |
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>Web</b> · 6 разборов</summary>
|
||
|
||
| Сложность | Таск | Описание |
|
||
|---|---|---|
|
||
|  | [CaplagCombat](caplagcombat-web-hard/WRITEUP.md) | Получаем пять флагов через debug-пакет, тапы, гонку, SQLi и дубли полей доказательства. |
|
||
|  | [DiffLane](difflane-web-easy/WRITEUP.md) | Вставляем разрешающую директиву в PR body и открываем внутреннюю заметку. |
|
||
|  | [DocMerge](task12_docmerge/WRITEUP.md) | Обходим AutoType-фильтр разрешённым reflection-плагином или наследником. |
|
||
|  | [FlowBase](task11_flowbase/WRITEUP.md) | Через IDOR и открытый вебхук копируем флаг в статику аргументами curl. |
|
||
|  | [GateKeeper](task13_gatekeeper/WRITEUP.md) | Получаем admin через смену пароля и выполняем root-команду через email. |
|
||
| — | [MongoPages](mongo-pages/WRITEUP.md) | Импортируем файл с флагом через серверный JS и обходим фильтр конкатенацией. |
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>Minecraft</b> · 1 разбор</summary>
|
||
|
||
| Сложность | Таск | Описание |
|
||
|---|---|---|
|
||
| — | [SYKTYV/KAR](syktyvkar/WRITEUP.md) | Через обработчик JNDI-ссылок стенда загружаем Bukkit-плагин и читаем флаг. |
|
||
|
||
</details>
|
||
|
||
---
|
||
|
||
<p align="center">
|
||
<a href="https://caplag.ru/"><img src="../assets/caplag-logo.svg" alt="Caplag" height="28"/></a>
|
||
</p>
|