61 lines
2.2 KiB
Markdown
61 lines
2.2 KiB
Markdown
# Writeup: Orbital Home / OH-21B4
|
||
|
||
## Вводные из игры
|
||
Участники получили две зацепки: название производителя `Orbital Home` и параметр `mesh` со значением `OH-21B4` (в легенде мог быть написан как mash/mesh).
|
||
|
||
## Поиск репозитория
|
||
1) По ключу производителя:
|
||
- запросы: `"Orbital Home"`, `orbital.home`, `"Orbital Home" iot`.
|
||
- подсказка: в коммитах встречаются e-mailы вида `@orbital.home`, что хорошо ищется по GitHub.
|
||
2) По связке с mesh:
|
||
- запросы: `"OH-21B4" github`, `"mesh" "Orbital Home"`.
|
||
|
||
В результате находится публичный репозиторий с IoT-модулями (router/printer/kettle/nas). В README он описан как публичная сборка «Orbital Home IoT Suite».
|
||
|
||
## Что внутри репозитория
|
||
- `router/` — сервис роутера и `config/router.json` с полями `vendor` и `mesh`.
|
||
- `printer/`, `kettle/`, `nas/` — публичные версии сервисов (функции урезаны, часть эндпоинтов закомментирована).
|
||
- История содержит доп. ветку `staging/router-mesh`, где во время стендовых проверок меняли `mesh`.
|
||
|
||
## Как извлечь артефакт
|
||
1) Клонировать репозиторий и посмотреть все ветки:
|
||
|
||
```bash
|
||
git clone <repo-url>
|
||
cd <repo>
|
||
git branch -a
|
||
```
|
||
|
||
2) Поискать `OH-21B4` по истории всех веток:
|
||
|
||
```bash
|
||
git log --all -S "OH-21B4" --oneline
|
||
# или
|
||
git grep -n "OH-21B4" $(git rev-list --all)
|
||
```
|
||
|
||
3) Открыть найденный коммит:
|
||
|
||
```bash
|
||
git show <commit>:router/config/router.json
|
||
git show <commit>:router/server.js
|
||
```
|
||
|
||
В `router/server.js` обнаруживается строка вида:
|
||
|
||
```
|
||
// vendor-note: <base64>
|
||
```
|
||
|
||
4) Декодировать base64:
|
||
|
||
```bash
|
||
echo <base64> | base64 -d
|
||
```
|
||
|
||
Получаем флаг:
|
||
|
||
```
|
||
caplag{Orb1ta1-h0me-vendor-found-needed-branch-version}
|
||
```
|