Global Page writeup
Райтап от тиммейта Jarvis.
Адрес таска http://globalpage.chal.ctf.westerns.tokyo
Зайдя на страницу и глянув в урл, можно увидеть потенциальную уязвимость LFI. Попробуем несколько распостраненных способов тестирования этого вектора:
- Null Byte
- Слеши и точки для перехода по директориям
- Врапперы и фильтры
- Подключение внешних файлов
[+] Null Byte
Видно, что нулевой байт работает как надо
[+] Слеши и точки
http://globalpage.chal.ctf.westerns.tokyo/?page=/etc/passwd
Слеши фильтруются, та же ситуация и с точками.. double encoding так же не принесло результатов.
[+] Врапперы и фильтры, подключенные извне скрипты так же не прокатят, так как обрезаются слеши и точки.
Но можно заметить странную ошибку на странице, после недолгих размышлений, ошибка
возникает, на основе параметра, взятого из заголовка Accept-Language.
Изменим параметр
Чудно. Значит в этом параметре так же есть LFI
Что же получается, запрос к файлу языков происходит путем складывания строки, состоящей из параметра, находящегося в GET запросе, слеша, и параметра, отправляющегося в заголовках. Пустой параметр page указать нельзя, иначе отправляет на страницу по дефолту. Пробел, табуляция и прочий пустой символ в page тоже не прокатил, значит надо написать там что то адекватное. Но при тестировании оказалось, что не фильтруются ни слеши ни точки. А вот нулевой байт по непонятным причинам не работает. Значит можно инклудить только пхп файлы(
Попробуем подключить внешний пхп файл, к примеру главную страницу моего сайта http://hack-quest.com/index.php.
Шелл не получится загрузить..совсем грустно становится :(
На худой конец остались фильтры. Попробуем
Ураа! Наконец то получилось пробить.
Декодировав base64 видим, что инклудится файл flag.php.
Декодировав base64 видим файл flag.php. Инклудим его и получаем флаг
<?php
$flag = "TWCTF{I_found_simple_LFI}";
- Автор: drakylar
- Комментарии: 0
- Просмотры: 2937