Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
26:03:2008, 10:36
|
|
Новенький ![]() Группа: Программист Сообщений: 3 Регистрация: 21:03:2008 Пользователь №: 16 054 Репутация: 0
|
Лабораторная по предмету "Основы защиты информации". Все бы хорошо, только Perl я в глаза не видела, а задание надо сделать. Помогите решить эту хитрую задачу.
Задание. Можно ли удалить файл /etc/passwd используя ошибку фильтрации вводу пользователя (переменная par1) приведенного ниже фрагмента cgi-программы написанной на языке Perl? Если да, запишите необходимое значение переменной par1 в www-url-encoding форме. Если нет - объясните, почему это невозможно. $cgidir=”/etc”; open(DATA,"$cgidir/data/$par1.pass"); |
|
Сообщение
#1
|
|
![]() |
|
|
26:03:2008, 23:39
|
|
Продвинутый ![]() ![]() Группа: Программист Сообщений: 198 Регистрация: 4:08:2006 Из: Vladivostok.pm Пользователь №: 5 749 Специализация: Perl, Web Репутация: 4
|
Я не спец в компьютерной безопасности, но думаю, что нет.
Не смотря на то, что выйти из папки /etc/data можно, имя открываемого файла всегда будет заканчиваться на ".pass". Как узнаете правильный ответ, поделитесь |
|
Сообщение
#2
|
|
|
|
27:03:2008, 17:31
|
|
Новенький ![]() Группа: Программист Сообщений: 3 Регистрация: 21:03:2008 Пользователь №: 16 054 Репутация: 0
|
Vovochka, спасибо и на этом )) Если вдруг узнаю правильный ответ, обязательно напишу.
|
|
Сообщение
#3
|
|
|
|
27:03:2008, 17:51
|
|
Почетный секретчик ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 166 Регистрация: 30:09:2003 Из: Брест Пользователь №: 58 Специализация: Пиво Репутация: 2
|
Nemiana
теоретически возможно. http://ldp.dvo.ru/linuxfocus/Russian/Novem...rticle203.shtml Цитата Поэтому, если наш запрос showhtml.cgi?filename=%2Fetc%2Fpasswd%00, файл будет называться my $filename = "/etc/passwd\0.html" и нашему удивленному взору предстанет кое-что не являющееся HTML. Что случилось? Команда strace показывает, как Perl открывает файл: /tmp >>cat >open.pl << EOF > #!/usr/bin/perl > open(FILE, "/etc/passwd\0.html"); > EOF /tmp >>chmod 0700 open.pl /tmp >>strace ./open.pl 2>&1 | grep open execve("./open.pl", ["./open.pl"], [/* 24 vars */]) = 0 ... open("./open.pl", O_RDONLY) = 3 read(3, "#!/usr/bin/perl\n\nopen(FILE, \"/et"..., 4096) = 51 open("/etc/passwd", O_RDONLY) = 3 Последний open(), показанный strace, соответствует системному вызову, написанному на C. Мы можем видеть, что расширение .html исчезает, что позволяет нам открыть /etc/passwd. проверять влом в догонку http://sdteam.com/?tid=295 |
|
Сообщение
#4
|
|
|
|
27:03:2008, 18:25
|
|
Новенький ![]() Группа: Программист Сообщений: 3 Регистрация: 21:03:2008 Пользователь №: 16 054 Репутация: 0
|
????
Спасибо за помощь! *Углубляюсь в чтение* |
|
Сообщение
#5
|
|
|
|
27:03:2008, 23:09
|
|
Продвинутый ![]() ![]() Группа: Программист Сообщений: 198 Регистрация: 4:08:2006 Из: Vladivostok.pm Пользователь №: 5 749 Специализация: Perl, Web Репутация: 4
|
Ну вот
|
|
Сообщение
#6
|
|
![]() |
|
Текстовая версия | Сейчас: 17:05:2008 - 11:25 |