php код из адресной строки

sunyang

Мастер
Регистрация
25 Апр 2009
Сообщения
440
Реакции
30
Есть пустой php файл.
Можо как-то волнить php код из адресной строки.

Может как-то исользуя eval() ?

Например \index.php?a=eval(...)
 
Есть пустой php файл.
Можо как-то волнить php код из адресной строки.

Может как-то исользуя eval() ?

Например \index.php?a=eval(...)
что значит пустой :) ? у него размер = 0 или он ничего не выводит ?

код из адресной строки в очень редких случаях конечно можно выполнить, но это только если внутри php-скрипта уже есть соответствующий код, например такой:
PHP:
eval($_GET[a]);
 
еще стоит добавить, что на большинстве shared-хостах eval() и подобные отключены из соображений безопасности.
 
PHP:
<?php
/*
$code = "<?php echo 'Hi'; ?>" ;
echo base64_encode($code); // PD9waHAgZWNobyAnSGknOyA/Pg==
*/
 
$param = 'code';
$get = str_replace($_SERVER['SCRIPT_NAME'].'?'.$param.'=','',$_SERVER['REQUEST_URI']);  //строка с кодом в base64;
 
$handle = fopen('new.php','w');
fwrite($handle,base64_decode($get));
fclose($handle);
header("Location: new.php");

Для просмотра ссылки Войди или Зарегистрируйся
Пройдя по такой ссылке получим редирект на new.php в который будет записан php код переданный в GET.

PHP:
<?php
$param = 'code';
if(@$_GET['code']){  //Ecли что то есть в параметрах то... поехали!
 
    $get = base64_decode(str_replace($_SERVER['SCRIPT_NAME'].'?'.$param.'=','',$_SERVER['REQUEST_URI']));  //строка с кодом
    $file = str_replace('/','',$_SERVER['SCRIPT_NAME']);
    //Считываем что есть в журнале
    $TMP0 = fopen('log','a+');
    $cahe = stream_get_contents($TMP0);
    fclose($TMP0);
 
    //Перезаписываем в журнал новые параметры
    $TMP = fopen('log','w+');
    fwrite($TMP,$get);
    fclose($TMP);
 
    //Читаем содержимое этого файла
    $index = fopen($file,'a+');
    $oldIndex = stream_get_contents($index);
    fclose($index);
 
    //Перезаписываем текущий файл новым содержимым
    $newIndex = str_replace($cahe,'',$oldIndex);
    $newFile =  $newIndex.$get;
    $index2 = fopen($file,'w+');
    fwrite($index2,$newFile);
    fclose($index2);
 
 
 
 
header("Location: index.php");
}
 
?>
Этот код редиректит сам на себя.

PHP:
<?php
$param = 'code';
if(@$_GET['code']){  //Ecли что то есть в параметрах то... поехали!
    $get = base64_decode(str_replace($_SERVER['SCRIPT_NAME'].'?'.$param.'=','',$_SERVER['REQUEST_URI']));  //строка с кодом
    eval ($get);
}
?>
с использование eval НЕ НУЖНО писать '<?php ?>'
 
Интересно что Вы пытаетесь сделать, что хотите использовать eval для запуска параметров из гета:), если хотите использовать этот скрипт в кроне то на мой взгляд логичнее передавать команды с определенными ключами, скрипт обрабатывает команды и ключи и выполняет требуемые операции ну как то так.
 
Назад
Сверху