hackmeplz
Хранит грязные секреты пользователей. Люди говорят, что ужасный секрет админа тоже хранится где-то тут
Use http Luke. 8080 waiting for you
Отдаем архи public/hackmeplz.tar.gz
docker-compose up --build -d
При старте сервис юзеров. Делает он это так:
func Init() {
auth = map[string]*User{}
users := GetUsers()
for _, user := range users {
auth[user.Name] = &user
}
// Заметим, что здесь значение &user берется по ссылке,
// но ссылка указывает на переменную цикла,
// которая после завершения будет указывать на последний элемент слайса
// ключ берется по значанию и будет верным
}
Таким образом при рестарте сервиса, для всех пользавателей в auth, значаение User будет равно последнему созданному пользователю, в том числе и флаг пользователя admin
Значит наша задача:
- Создать пользователя
- Перезапустить второго пользоателя
- Попросить сервис отдать все грязные секреты админа используя токен нашего пользователя
- Profit?
Перезапустить сервис можно попыткой создать уже существующего пользователя, тогда сервис вызовет glog.Fatal(...)
который вызовет os.Exit(255)
Пример решения: sploit.sh
Cup{y0u_haCk_mY_seRv1cE_a3_Wha3_c0s3}