Видим главную страницу
Перехватим и посмотрим запрос на прочтение лога
Способ 1: Code Analysis
Видим, что флаг лежит в /home/overseer/flag.txt
Видим, что все, что подается в
log_file
“санитизируется” и проверяется на /
в начале.
Вот и ошибка. При вызове
sanitize_filename
последовательности ../
заменяются не рекурсивно.
Исходя из этого, мы можем составить payload такого типа. Тут, выделенные красным блоки уберутся, но все, что осталось, все равно соберется в последовательности
../
Получаем флаг.
Способ 2: Fuzzing
По логике задания, можно предположить, что будет LFI и можно попробовать пофаззить.
Сохраним запрос в файл.
Запустим ffuf с листом на LFI тестинг от Джейсона Хаддикса.
ffuf -request search.req -request-proto http -w /opt/SecLists/Fuzzing/LFI/LFI-Jhaddix.txt
И также получаем рабочие payload’ы на чтение файлов. Из исходного кода находим файл, который нужно прочитать, и так же читаем, как и в первом способе.