21 lines
1.3 KiB
Markdown
21 lines
1.3 KiB
Markdown
# Эксплойт 1
|
||
|
||
Флагстор 1. Непроходимые уровни (их награды)
|
||
|
||
Уязвимость: В функции MoveOutOfWay отсутствует проверка границ (проверка выполняется на стороне клиента). Уровни можно пройти, выйдя за пределы карты.
|
||
|
||
Исправление: Добавить проверку границ в функцию MoveOutOfWay:
|
||
```Go
|
||
if p.X < 0 || p.Y < 0 || p.X >= sess.Tiles.size || p.Y >= sess.Tiles.size {
|
||
return false
|
||
}
|
||
```
|
||
|
||
# Эксплойт 2
|
||
|
||
Флагстор 2. Приватные уровни (их награды)
|
||
|
||
Уязвимость: Бэкдор в функции Level.CreateFrom (спрятан в шаблоне с множеством табуляций, в результате чего он оказывается вне экрана). Он создаёт пользователя с именем и паролем, равными `sha256(level_name)[:32]`, которым затем можно воспользоваться для доступа к уровню и флагу.
|
||
|
||
Исправление: удалить бэкдор из `create_from.tmpl` и регенерировать код ИЛИ удалить его напрямую из `create_from.go`.
|