Статьи Local include && PHP

Discussion in 'Статьи' started by baz1k, 10 Jan 2008.

  1. baz1k

    baz1k Elder - Старейшина

    Joined:
    22 Aug 2006
    Messages:
    38
    Likes Received:
    21
    Reputations:
    2
    /* Local include && PHP */

    [​IMG]

    Итак, давайте немного заглянем, как это все работает в shell...

    Создадим файл, в котором будет включаться языковой модуль.
    Для демонстрации, поскольку вызывать файл мы будем не через web, включаемый параметр зададим аргументом командной строки.


    теперь создадим файл языкового модуля, который будет демонстрировать включение файла:

    тестируем:

    Теперь попробуем сделать обход каталога как в windows:

    А хер! Это и логично, поскольку, в системе такие шутки не прокатывают. Любая системная команда с подобным "обходом" каталога наткнется на ошибку системы:

    Посмотрим, что происходит с выполнением php скрипта при правильном инклуде:

    А теперь посмотрим на неправильный инклуд:

    Ключевые строки:

    Казалось бы, все как и нужно. Но давайте сделаем небольшую правку в нашем скрипте и позволим не системе, а самому интерпретатору PHP определить путь к включаемому файлу:

    для нас интересны строки вот отсюда:

    PHP обманывает себя и наш инклуд проходит с обходом "каталога" =)

    Проверяем:

    В свое время эта особенность PHP была использована для получения доступа к нашумевшему ресурсу "Киберджихад" ;)
    P.S. аналогичным образом будет работать обход, если вместо dirname(__FILE__) поставить ./ или еще что-то подобное ;)
    P.P.S. актуальные варианты "рабочих" скриптв:
    include(dirname(__FILE__).'/include/init.'.$ext);
    include(dirname(__FILE__).'/language/lang-.'.$lang.'.php);

    Автор: RST/GHC :)
     
    #1 baz1k, 10 Jan 2008
    Last edited: 10 Jan 2008
    1 person likes this.