Символ ; в GET-запросе является разделителем параметров аналогично символу &. Не '<?php eval($_REQUEST[cmd]); ?>', а '<?php eval($_REQUEST[cmd])%3B ?>'
Expl0ited, пруф - http://en.wikipedia.org/wiki/URI_scheme The query is an optional part, separated by a question mark ("?"), that contains additional identification information that is not hierarchical in nature. The query string syntax is not generically defined, but it is commonly organized as a sequence of <key>=<value> pairs, with the pairs separated by a semicolon or an ampersand. For example: Semicolon: key1=value1;key2=value2;key3=value3 Ampersand: key1=value1&key2=value2&key3=value3 http://tools.ietf.org/html/rfc1866
http://forum.antichat.net/view_reputation.php?userid=1845&p=3046274&count=5000 http://forum.antichat.net/view_reputation.php?userid=1845&p=3046274;count=5000
M_script, можно живой пример Веб-сервера в котором действительно http распознает в адресной строке символ ; за разделитель? Насколько мне известно apache, nginx, iis, zeus, lighthttpd распознают & как разделитель и ; как обычный символ.
http://auto.mail.ru/article.html?id=111 http://auto.mail.ru/article.html?a=b&id=111 http://auto.mail.ru/article.html?a=b;id=111 Этого хватит? )
Хорошо Но всё же стоит отметить что символ ; как разделитель это прерогатива других протоколов (например таких как data), отличных от http(s), в http(s) это индивидуальная (не стандартная) настройка, и случаи такие единичные.
Кстати НЕТ, пожалуй не соглашусь, потому как в данном случае скорее всего используется mod_rewrite в котором собственная система парсинга получаемых данных.
Это не стандарт HTTP-протокола, а рекомендация W3C, связанная со стандартом HTML, чтобы избавиться от 4-х лишних символов при написании пути (&) Ты просто не обращал внимания, на крупных серверах встречается часто. Разницы нет, как реализовано. Если в RFC HTML прописана настоятельная рекомендация поддерживать разделитель ;, почему ты думаешь, что никто не будет выполнять эту рекомендацию? yandex.ru rambler.ru msn.com yahoo.com
Извините, что лезу в ваш разговор, но хотел бы прокорректировать свой ответ. Один юзер скинул ссылку, где чел с другого форума пишет, что этот фильтр возможно обойти: https://rdot.org/forum/showpost.php?p=24148&postcount=1930 Поэтому хочу детально ответить на этот вопрос, чтобы быть 100% уверенным в своем ответе проверил на практике: Скажем код у нас такой PHP: <?php $inc = preg_replace('/\.+\//', '', $_GET['include']); echo "Path:" . $inc . "<br><br>"; include($inc); ?> Чел с другого форума утверждает, что можно обойти если задать ..\/..\/..\/etc/hosts я говорю что нельзя. Такое прокатит только у веб сервера, но не у скрипта. Задаем Code: www.site.ru/a/b/c/..\/..\/file.php тут можно выйти за пределы папки (a, b, c) потому что так решает веб сервер, а не скрипт. Но если задать Code: www.site.ru/test/page.php?include=..\/..\/..\/etc/hosts содержание аргумента паредается как есть, т.е. ..\/..\/..\/etc/hosts, а функция типа include() не станет открывать такой адрес. А сейчас внимание! Если задать абсолютный путь к файлу этот фильтр можно обойти, т.е. Code: www.site.ru/test/page.php?include=/etc/hosts открывает файл. У меня веб сервер на локалхосте (LAMP), стоит с настроиками по умолчанию.
Ответ c411k'а правильный, его способ работает как на виндовсе так и на линуксе без проблем Я пробывал его вначале, но сбросил со счетов ибо проверял в консольке типа того Code: cd ..\/..\/..\/..\/..\/..\/..\/..\/ и нифага оно не переходило в низ по каталогам, потом уже попробывал так Code: cat ..\/..\/..\/..\/..\/..\/..\/..\/etc/passwd и файл прочитался И инклуд работает, смотри: PHP: <?php $file = '..\/..\/..\/..\/..\/..\/..\/..\/.htaccess'; $inc = preg_replace('/\.+\//', '', $file); echo "Path:" . $inc . "<br><br>"; include($inc); ?> .htaccess лежит в корне диска и прекрасно инклудится.
подскажите как обойти фильтр на from, в sql запросе?? /*!from*/ - не пускает FroM - не пускает тоисть version() , database(), user() это все работает, строю запрос типа table_name+from пишет: запрос небезопасен и был отвергнут
а зачем вообще ставить ; в этом коде? если такие создаются проблемы из за ; ЗЫ на моем опыте я еще ни разу не сталкивался с проблемой c ; ЗЫЫ М_скрипт возможно ты в чем то прав, но все же больше склоность к тому что это срабатывает из за mod_rewrite , так как на сколько я знаю разделители это ?(первый параметр) и &, а все остальное .... это уже извращениие.
Кто 100% уверен, ответьте пожалуйста на предыдущий спорный вопрос, насчет путей к файлу. У trololoman96 открывается, у меня нет. У него версия PHP по старше, у меня 5.3.10. Интересно, include должен открывать такие пути или нет?