Найти в Дзене
B0rn2beR00T

Решение Codeby Games (Безопасное хранилище)

Приветствую, друзья!
Разберём среднюю по сложности задачку "Безопасное хранилище" с Codeby Games. В описании к заданию уже есть маленькая подсказка, которая намекает проверить фильтр атакуемого сайта. Итак, заходим на наш таргет и смотрим что у нас есть из зацепок: Сразу же видим несколько форм. Две из них для ввода текстовых значений (которые бесполезны для нас) и одна для создания директорий, что намекает нам на то, что здесь возможно используются команды Unix-based системы. Проверим сайт на наличие уязвимости command injection. Введём в строку ввода следующее: none;ls И видим выполнение команды на просмотр содержимого директории. По сути, вместо none можно писать всё что угодно. Значение до ; будет принято за название директории, а после как исполняемая команда. Фильтр срабатывает только на первое значение и не допускает выполнить команду, но при внедрении двух таких значений уязвимость сработает. Посмотрим содержимое index.php: none; cat index.php: В папке /folders тоже ничего и
Оглавление

Приветствую, друзья!
Разберём среднюю по сложности задачку "Безопасное хранилище" с Codeby Games.

Способ решения №1

В описании к заданию уже есть маленькая подсказка, которая намекает проверить фильтр атакуемого сайта.

Итак, заходим на наш таргет и смотрим что у нас есть из зацепок:

-2

Сразу же видим несколько форм. Две из них для ввода текстовых значений (которые бесполезны для нас) и одна для создания директорий, что намекает нам на то, что здесь возможно используются команды Unix-based системы. Проверим сайт на наличие уязвимости command injection.

Введём в строку ввода следующее: none;ls

-3

И видим выполнение команды на просмотр содержимого директории.

По сути, вместо none можно писать всё что угодно. Значение до ; будет принято за название директории, а после как исполняемая команда. Фильтр срабатывает только на первое значение и не допускает выполнить команду, но при внедрении двух таких значений уязвимость сработает.

Посмотрим содержимое index.php: none; cat index.php:

-4

В папке /folders тоже ничего интересного нет. Поэтому решил посмотреть, что находится в родительской директории: none;ls ..

-5

А вот и флаг! Осталось только его вытащить. Я покажу несколько вариантов для решения:

none;cd ..;cat flag.txt

nano;cat ../flag.txt

none;cd .. && cat flag.txt

-6

Способ решения №2

Вы можете попробовать вытащить флаг при помощи Burp Suite, но прописывать командную инъекцию там будет немного сложнее из-за необходимости учитывать отступа (%20 или +).

Ну вот к примеру засунем запрос в Repeater и в атрибуте catalog запишем одну из команд:

-7

%3B - это символ ; переводя в URL-кодировку. Флаг вы получите в поле Response. Спасибо за внимание!

-8