Автор: @Vespii
Ссылка на таск Codeby:
https://codeby.games/categories/web/e33e5eef-1b48-465d-b087-3ccc1b09b1c8
Описание задания
Я запустил облачное хранилище файлов. Пока доступна только бета-версия, но без смс и регистрации :)
62.173.140.174:16034
Решение
На сайте присутствует форма загрузки файлов на сервер.
После загрузки файл сохранятся в папке upload, и название файла заменяется на новое случайное имя.
К заданию были прикреплены исходники. Давайте взглянем на них.
В upload.php написано, какие расширения файлов он не принимает.
if($imageFileType == "php" || $imageFileType == "php5" || $imageFileType == "php4" || $imageFileType == "php3" || $imageFileType == "php2" || $imageFileType == "phtml" || $imageFileType == "phar") {
$output = "Sorry, PHP files are not allowed.";
$uploadOk = 0;
}
А в .htaccess была найдена интересная строчка, которая допускает расширение x-httpd-php, и сервер будет обрабатывать такие файлы как php скрипты.
# RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
AddType application/x-httpd-php .x-httpd-php
В качестве шелла будем использовать p0wny-shell.
Поменяем расширение файла на x-httpd-php:
Попробуем загрузить наш файл:
Да, это получилось. Файл был успешно загружен на сервер.
Переходим по ссылке и видим, что все прекрасно работает. Ура! Остается только прочитать флаг и задание решено.
Tags: