Task # Task #9

Discussion in 'Задания/Квесты/CTF/Конкурсы' started by Baskin-Robbins, 9 Feb 2020.

  1. undefo

    undefo New Member

    Joined:
    4 Sep 2019
    Messages:
    2
    Likes Received:
    3
    Reputations:
    11
    Было интересно, спасибо
     
    Baskin-Robbins likes this.
  2. leksadin

    leksadin Level 8

    Joined:
    19 Jan 2016
    Messages:
    120
    Likes Received:
    55
    Reputations:
    7
    Хороший таск, ничего сложного.

    После хинтов остаётся буквально один шаг до флага.
     
    4Fun, undefo and Baskin-Robbins like this.
  3. Baskin-Robbins

    Baskin-Robbins Reservists Of Antichat

    Joined:
    15 Sep 2018
    Messages:
    182
    Likes Received:
    549
    Reputations:
    84
    С момента запуска задания прошло две недели, а значит пора подводить итоги.

    Взглянем еще раз на задание.

    Нам предлагается прочитать некий flag.txt, который распалагается выше дефолтной
    веб директории. Узнать это мы можем заглянув в сорцы нашего таска, для нас
    его любезно закомментировали.

    Повтыкав немного, понимаем что у нас читалка файлов. В целом задача таска и встречающая
    нас надпись "Read Me bro!" подтверждает наше предположение. Далее самое интересное - фильтр.

    Подробно изучив систему фильтрации нашего инпута, приходим к выводам о блокировки
    большинства врапперов и абсолютных путей. Подняться выше с помощью '..' мы также не можем.
    И фильтрация php файлов нам на десерт, прочитать index.php просто так не удастся.
    Трюки с кодировками также не принесут никаких результатов. Но все же фильтруется не все...

    Наш фильтр пропускает ogg:// rar:// ssh2:// compress.bzip2://.
    file:// и data:// фильтруются не полностью, в первом случае предупреждение получаем
    на попытку использования file:///, во втором пропускается data: и data:/.

    Можно было попробовать повтыкать во все и убедиться что первые четыре никаким образом
    нам не помогут. Эти обертки не включены по умолчанию и комментарий к первому хинту
    подтверждает, здесь их не использовать.
    Остается два варианта на выбор - data и file. И тут было важно не пойти по ложному пути.
    Обертка file используется исключительно с абсолютными путями, т.е. использование
    таких форматов невозможно - file://index.php file://./index.php. Казалось бы ничего
    нельзя придумать, ну нельзя ее использовать в таком формате на UNIX-подобных машинах.

    И это могло подтолкнуть поглубже покопаться в обертке data, освежить старые знания.
    Но это как раз и есть ложный путь. В нашем случае этот враппер ничем не сможет помочь,
    чтение будет происходить не из переданного файла, а содержимого самого враппера.

    И казалось бы вариантов нет, фильтр не обойти. Но у нас остался открытым вопрос -
    почему же с враппером file нельзя использовать относительные пути?

    И вот тут то и кроется правильный ответ. В том как мы можем использовать данный
    враппер в формате file:// на UNIX-подобных ОС. По этому поводу есть старый репорт 2004 года
    https://bugs.php.net/bug.php?id=28820, в котором нам однозначно говорится о невозможности
    использования относительных путей. И причина по которой это сделано наталкивает нас
    на правильное решение.

    The reason relative paths are not supported with the file:// wrapper comes down to
    a compromise in how UNC paths are dealt with (and more specifically how / are fuzzily
    interpreted as \ for windows installations).

    For Example:

    file://foo/bar

    Could be interpreted as a relative URI: foo/bar from the current working directory,
    OR it could be interpreted as a UNC: \\foo\bar (share `bar` on computer `foo`).

    Но не одним баг-репортом единым живы. Прям готовое решение, просто скопируй и вставь,
    можно было найти почитав RFC и! википедию по запросу file:// схема URI.

    https://tools.ietf.org/html/rfc8089
    https://ru.wikipedia.org/wiki/File_(схема_URI)

    В итоге правильным решением было использование обертки file в таком формате:
    file://<host>/<absolute path>
    =====

    Всем спасибо.
    Пользуясь случаем, поздравляю с Днем защитника Отечества!
    Таск закрыт.
     
    #23 Baskin-Robbins, 23 Feb 2020
    Last edited: 23 Feb 2020
    Раrаdох, 4Fun, seostock and 7 others like this.
  4. crlf

    crlf Green member

    Joined:
    18 Mar 2016
    Messages:
    551
    Likes Received:
    1,036
    Reputations:
    348
    И листая сорцы PHP! :)
     
    4Fun, ms13, dooble and 2 others like this.
  5. RedHazard

    RedHazard Member

    Joined:
    17 Apr 2011
    Messages:
    66
    Likes Received:
    12
    Reputations:
    8
    а как прочитать исход index.php ?
     
  6. Baskin-Robbins

    Baskin-Robbins Reservists Of Antichat

    Joined:
    15 Sep 2018
    Messages:
    182
    Likes Received:
    549
    Reputations:
    84
    так же как и флаг)
    index.php?name=file://localhost/var/www/html/index.php
     
    #26 Baskin-Robbins, 23 Feb 2020
    Last edited: 23 Feb 2020
    seostock and RedHazard like this.
  7. RedHazard

    RedHazard Member

    Joined:
    17 Apr 2011
    Messages:
    66
    Likes Received:
    12
    Reputations:
    8
    Перелопатил куча инфы, ТОННЫ инфы однотипной копипаст.
    до localhost так и не допёр.
     
    fandor9, dooble and Baskin-Robbins like this.
  8. fandor9

    fandor9 Active Member

    Joined:
    16 Nov 2018
    Messages:
    223
    Likes Received:
    243
    Reputations:
    13
    +1
    а я пытался через data: враппер выпилить флаг)
     
    dooble and Baskin-Robbins like this.
Loading...