Files
Serdtse-Sysoly/finals/README.md
T
2026-09-17 00:50:07 +03:00

102 lines
7.3 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">Сердце Сысолы</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>
| Сложность | Таск | Описание |
|---|---|---|
| ![easy](https://img.shields.io/badge/easy-brightgreen) | [NullRoute KEM](nullroute-kem-crypto-easy/WRITEUP.md) | Открываем отклонённую KEM-капсулу с общедоступным fallback-секретом. |
| ![easy](https://img.shields.io/badge/easy-brightgreen) | [ScalarAlias](scalaralias-crypto-easy/WRITEUP.md) | Меняем скаляр подписи на эквивалентный и получаем ключ экспорта. |
</details>
<details>
<summary><b>Forensic</b> · 2 разбора</summary>
| Сложность | Таск | Описание |
|---|---|---|
| ![medium](https://img.shields.io/badge/medium-orange) | [Admission Drift](admission-drift-forensic-medium/WRITEUP.md) | Связываем прямой AdmissionReview, procfd и успешное чтение секрета. |
| ![medium](https://img.shields.io/badge/medium-orange) | [Grant Residue](grant-residue-forensic-medium/WRITEUP.md) | Прослеживаем device code phishing от кода на станции до Graph-экспорта. |
</details>
<details>
<summary><b>PWN</b> · 7 разборов</summary>
| Сложность | Таск | Описание |
|---|---|---|
| ![medium](https://img.shields.io/badge/medium-orange) | [ProxyRewrite](proxyrewrite-pwn-medium/WRITEUP.md) | Длинной заменой URL переписываем маршрут и поле диагностики. |
| ![easy](https://img.shields.io/badge/easy-brightgreen) | [PulseWidth](pulsewidth-pwn-easy/WRITEUP.md) | Обходим проверку длины через uint8_t и переписываем права сессии. |
| ![medium](https://img.shields.io/badge/medium-orange) | [RailAnnot](railannot-pwn-medium/WRITEUP.md) | Переполняем refcount и подменяем аннотацию через use-after-free. |
| ![hard](https://img.shields.io/badge/hard-critical) | [RawForge X3F](rawforge-x3f-pwn-hard/WRITEUP.md) | Переполняем произведение размеров RAW и затираем поля задания samples-данными. |
| ![easy](https://img.shields.io/badge/easy-brightgreen) | [RegexScope](regexscope-pwn-easy/WRITEUP.md) | Восстанавливаем случайный токен побайтовым оракулом чтения за границей. |
| ![easy](https://img.shields.io/badge/easy-brightgreen) | [SortKey Station](sortkey-station-pwn-easy/WRITEUP.md) | Знаковым смещением направляем проверку ключа на строку допуска в профиле. |
| ![hard](https://img.shields.io/badge/hard-critical) | [ZCRX Broker](zcrx-broker-pwn-hard/WRITEUP.md) | Двойным возвратом блока перекрываем capability и меняем закодированный handler. |
</details>
<details>
<summary><b>Reverse</b> · 5 разборов</summary>
| Сложность | Таск | Описание |
|---|---|---|
| ![medium](https://img.shields.io/badge/medium-orange) | [Orchid Wallet](orchid-wallet-ios-reverse-medium/WRITEUP.md) | Связываем конфиг в Mach-O с ключом из provisioning profile. |
| ![easy](https://img.shields.io/badge/easy-brightgreen) | [PYZ Sidecar](pyzsidecar-python-reverse-easy/WRITEUP.md) | Распаковываем боковой блок Python-байткода и собираем флаг. |
| ![medium](https://img.shields.io/badge/medium-orange) | [Tollgate IIS](tollgate-iis-dotnet-reverse-medium/WRITEUP.md) | Расшифровываем таблицу маршрутов AES-ключом из IIS-модуля. |
| ![medium](https://img.shields.io/badge/medium-orange) | [WasmCoat](wasmcoat-android-reverse-medium/WRITEUP.md) | Разбираем custom section wasm и снимаем XOR ключом из DEX. |
| ![hard](https://img.shields.io/badge/hard-critical) | [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>
| Сложность | Таск | Описание |
|---|---|---|
| ![hard](https://img.shields.io/badge/hard-critical) | [CaplagCombat](caplagcombat-web-hard/WRITEUP.md) | Получаем пять флагов через debug-пакет, тапы, гонку, SQLi и дубли полей доказательства. |
| ![easy](https://img.shields.io/badge/easy-brightgreen) | [DiffLane](difflane-web-easy/WRITEUP.md) | Вставляем разрешающую директиву в PR body и открываем внутреннюю заметку. |
| ![hard+](https://img.shields.io/badge/hard%2B-critical) | [DocMerge](task12_docmerge/WRITEUP.md) | Обходим AutoType-фильтр разрешённым reflection-плагином или наследником. |
| ![hard](https://img.shields.io/badge/hard-critical) | [FlowBase](task11_flowbase/WRITEUP.md) | Через IDOR и открытый вебхук копируем флаг в статику аргументами curl. |
| ![hard](https://img.shields.io/badge/hard-critical) | [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>