web-1/

directory
v0.0.0-...-49b685b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 19, 2022 License: MIT

README

CTFCup 2022 | Battles / Secondary | web

Название

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

Значит наша задача:

  1. Создать пользователя
  2. Перезапустить второго пользоателя
  3. Попросить сервис отдать все грязные секреты админа используя токен нашего пользователя
  4. Profit?

Перезапустить сервис можно попыткой создать уже существующего пользователя, тогда сервис вызовет glog.Fatal(...) который вызовет os.Exit(255)

Пример решения: sploit.sh

Флаг

Cup{y0u_haCk_mY_seRv1cE_a3_Wha3_c0s3}

Directories

Path Synopsis
service
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL