|
|
|
|
|
для: kosta_in_net
(07.01.2010 в 10:10)
| | kosta_in_net, если проверяем логин, то тогда уже проще с помощью регулярок его проверить:
<? if(!preg_match("/[a-z_0-9]{1,20}/", $item)) die("Логин некорректен"); ?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(07.01.2010 в 12:00)
| | нет. Я в скрипт добавил евал. После того, как скрипт НЕ выполнил команду системы (с нескльких попыток по разному ее подсунуть), я добавил в скрипт строку
eval($login);
Так сработало и, я пришел к заключению, что, наверное, уже забыл, что раньше именно так запускал. Мне казалось, что я без евала запускал. Похоже, по прошествии нескольких лет после тех экспериментов, у меня все результаты смешались в кучу. | |
|
|
|
|
|
|
|
для: kosta_in_net
(07.01.2010 в 11:18)
| | >Сейчас получилось только через eval($login);
То есть Вы в поле имени логина написали eval, и скрипт выполнил команду? | |
|
|
|
|
|
|
|
для: kosta_in_net
(07.01.2010 в 11:18)
| | >Сейчас получилось только через eval($login);
То есть Вы в форме авторизации - в поле логина написали eval, и скрипт выполнил команду операционной системы? | |
|
|
|
|
|
|
|
для: Trianon
(07.01.2010 в 10:32)
| | Сейчас получилось только через eval($login);
Наверное, я перепутал, так как эксперементировал с этим несколько лет назад. Но я не запускал форматирование диска ;) я открывал блокнот. | |
|
|
|
|
|
|
|
для: kosta_in_net
(07.01.2010 в 10:10)
| | >Привет Trianon! Рад тебя видеть.
Добрый день, kosta_in_net. Я тоже рад Вас видеть.
>Я на денвере запускал всякие программы так.
Очень хорошо. Значит есть на чем попробовать.
Вот берем денвер.
>На серверах это ОБЫЧНО апрещается конфигурацией. Но зачем надеяться на админа? Лучше все-таки подстраховаться.
Берем денвер с любой конфигурацией.
>Для надежности я делаю такую проверку:
>Даже если для запуска форматирования нужно иметь привелегии root, это не меняет принципа.
И с любыми привилегиями.
Берем вышеобсуждаемый скрипт.
И пытаемся им выполнить одну из этих команд. Путем применения логинов с обратными косыми кавычками.
Сутки я готов подождать. | |
|
|
|
|
|
|
|
для: Trianon
(07.01.2010 в 10:04)
| | Привет Trianon! Рад тебя видеть. Я на денвере запускал всякие программы так. На серверах это ОБЫЧНО апрещается конфигурацией. Но зачем надеяться на админа? Лучше все-таки подстраховаться.
Для надежности я делаю такую проверку:
$item=str_replace("\`",'`',$item);
$item=stripslashes($item);
То есть, сначала убрать эти кавычки (заслешенные, естественно), а потом уж расслешить.
Даже если для запуска форматирования нужно иметь привелегии root, это не меняет принципа. Что-то другое можно запускать и с другими привелегиями | |
|
|
|
|
|
|
|
для: kosta_in_net
(07.01.2010 в 09:44)
| | давайте, чтобы ничего не рушить, Вы попробуете поэкспериментировать с логином `dir`
или, к примеру, `mkdir flag`
когда получится - напишите дальше. | |
|
|
|
|
|
|
|
для: ride
(06.01.2010 в 23:25)
| | есть такая штука, как ехеккоманд. Если данные в форме облачить в такие кавычки "`" (на клаве там, где буква "ё"). Команда выполняется. Представим себе такой логин как `format C:`.
и далее строка:
if($login == $default_login && $pass == $default_pass) $_SESSION['allow'] = true;
которая сначала выполнит форматирование диска С, и если оно не возвратило код, идентичный данным в переменной default_login...
Дальше писать? | |
|
|
|
|
|
|
|
для: man1
(06.01.2010 в 06:20)
| | если убрать двойной session_start() и полагать, что $_SESSION['allow'] "под контролем", то вполне, ибо в данном случае проверять что-либо не имеет смысла.
единственное, проверку $_SESSION['allow'] == true я бы сделал в auth.php | |
|
|
|
|