Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Безопасен ли такой код?

Сообщения:  [1-10]    [11-20]  [21-26] 

 
 автор: man1   (19.01.2010 в 14:15)   письмо автору
 
   для: kosta_in_net   (07.01.2010 в 10:10)
 

kosta_in_net, если проверяем логин, то тогда уже проще с помощью регулярок его проверить:

<? if(!preg_match("/[a-z_0-9]{1,20}/"$item)) die("Логин некорректен"); ?>

  Ответить  
 
 автор: kosta_in_net   (07.01.2010 в 12:07)   письмо автору
 
   для: Trianon   (07.01.2010 в 12:00)
 

нет. Я в скрипт добавил евал. После того, как скрипт НЕ выполнил команду системы (с нескльких попыток по разному ее подсунуть), я добавил в скрипт строку

eval($login);

Так сработало и, я пришел к заключению, что, наверное, уже забыл, что раньше именно так запускал. Мне казалось, что я без евала запускал. Похоже, по прошествии нескольких лет после тех экспериментов, у меня все результаты смешались в кучу.

  Ответить  
 
 автор: Trianon   (07.01.2010 в 12:04)   письмо автору
 
   для: kosta_in_net   (07.01.2010 в 11:18)
 

>Сейчас получилось только через eval($login);


То есть Вы в поле имени логина написали eval, и скрипт выполнил команду?

  Ответить  
 
 автор: Trianon   (07.01.2010 в 12:00)   письмо автору
 
   для: kosta_in_net   (07.01.2010 в 11:18)
 

>Сейчас получилось только через eval($login);


То есть Вы в форме авторизации - в поле логина написали eval, и скрипт выполнил команду операционной системы?

  Ответить  
 
 автор: kosta_in_net   (07.01.2010 в 11:18)   письмо автору
 
   для: Trianon   (07.01.2010 в 10:32)
 

Сейчас получилось только через eval($login);
Наверное, я перепутал, так как эксперементировал с этим несколько лет назад. Но я не запускал форматирование диска ;) я открывал блокнот.

  Ответить  
 
 автор: Trianon   (07.01.2010 в 10:32)   письмо автору
 
   для: kosta_in_net   (07.01.2010 в 10:10)
 

>Привет Trianon! Рад тебя видеть.
Добрый день, kosta_in_net. Я тоже рад Вас видеть.

>Я на денвере запускал всякие программы так.
Очень хорошо. Значит есть на чем попробовать.
Вот берем денвер.

>На серверах это ОБЫЧНО апрещается конфигурацией. Но зачем надеяться на админа? Лучше все-таки подстраховаться.

Берем денвер с любой конфигурацией.

>Для надежности я делаю такую проверку:

>Даже если для запуска форматирования нужно иметь привелегии root, это не меняет принципа.

И с любыми привилегиями.

Берем вышеобсуждаемый скрипт.

И пытаемся им выполнить одну из этих команд. Путем применения логинов с обратными косыми кавычками.

Сутки я готов подождать.

  Ответить  
 
 автор: kosta_in_net   (07.01.2010 в 10:10)   письмо автору
 
   для: Trianon   (07.01.2010 в 10:04)
 

Привет Trianon! Рад тебя видеть. Я на денвере запускал всякие программы так. На серверах это ОБЫЧНО апрещается конфигурацией. Но зачем надеяться на админа? Лучше все-таки подстраховаться.
Для надежности я делаю такую проверку:

$item=str_replace("\`",'&#096;',$item);
$item=stripslashes($item);

То есть, сначала убрать эти кавычки (заслешенные, естественно), а потом уж расслешить.

Даже если для запуска форматирования нужно иметь привелегии root, это не меняет принципа. Что-то другое можно запускать и с другими привелегиями

  Ответить  
 
 автор: Trianon   (07.01.2010 в 10:04)   письмо автору
 
   для: kosta_in_net   (07.01.2010 в 09:44)
 

давайте, чтобы ничего не рушить, Вы попробуете поэкспериментировать с логином `dir`
или, к примеру, `mkdir flag`

когда получится - напишите дальше.

  Ответить  
 
 автор: kosta_in_net   (07.01.2010 в 09:44)   письмо автору
 
   для: ride   (06.01.2010 в 23:25)
 

есть такая штука, как ехеккоманд. Если данные в форме облачить в такие кавычки "`" (на клаве там, где буква "ё"). Команда выполняется. Представим себе такой логин как `format C:`.
и далее строка:
if($login == $default_login && $pass == $default_pass) $_SESSION['allow'] = true;

которая сначала выполнит форматирование диска С, и если оно не возвратило код, идентичный данным в переменной default_login...
Дальше писать?

  Ответить  
 
 автор: ride   (06.01.2010 в 23:25)   письмо автору
 
   для: man1   (06.01.2010 в 06:20)
 

если убрать двойной session_start() и полагать, что $_SESSION['allow'] "под контролем", то вполне, ибо в данном случае проверять что-либо не имеет смысла.
единственное, проверку $_SESSION['allow'] == true я бы сделал в auth.php

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-26] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования