Есть такой код: PHP: eval(gzinflate(base64_decode('__string__'))); Он выдаёт в php файле некоторый код, который исполняется. Я так понимаю, что вот это часть: PHP: base64_decode('__string__') - и есть содержание .gz файла? (Ну, __string__ - некоторая закодированная строка) А потом эта строчка декодируется как .gz ресурс ( gzinflate() ), а после выводится на исполнение ( eval() ). Так вот, можно ли получить этот исполняемый код? Пытался просто print'ануть всю эту гадость в браузер - нет эффекта. записать в файл, прочитать gzopen() вывести gzpassthru() - не помогает. Помогите, если можете. Plz?
Не, я так пробовал. Выдаёт следующее: HTML: ?><? eval(gzinflate(base64_decode('____________String____________'))); ?><? (Только вот это: ____________String____________ уже не то , что мы передаём, т.е. не __string__) *** Возникло подозрение, что строка исполнения упакована несколько раз в такую обвёртку, ну что-то типа: PHP: $true_string = 'string'; $string='?><? eval(gzinflate(base64_decode(' . base64_encode($true_string) . '))); ?><?'; $string='?><? eval(gzinflate(base64_decode(' . base64_encode($string) . '))); ?><?'; .................................................................... И в конце концов получаем __string__ Можно понять сколько раз проделана эта операция и как достать чистый php-код? (Могу, если интересно, выложить __string__)
PHP: <?php file_put_contents('code.php', gzinflate(base64_decode('__string__'))); ?> А потом посмотреть содержимое файла
Я так пробовал. (см. пост выше) Точнее не совсем так, просто юзаю Денвер, поэтому нет указанной вами функции, делал так: PHP: $handle = fopen('code.php', 'a'); fwrite($handle, gzinflate(base64_decode(__string__))); fclose($handle); Пишет (внутри файла) следующее: PHP: ?><? eval(gzinflate(base64_decode('____________String____________'))); ?><? Думаю, так использована многослойная обвёртка. Думаю, как разобрать это в цикле....
Всё, я его поборол! (Надо же было кому-то так поиздеваться!!!) Всё было, как я и думал. Прогнал обратную развёртку и получил исходный код на 35 шаге цикла (Тут-то он и сдался!) PHP: <? print '<pre>'; $count_chars_begin = strlen("?><? eval(gzinflate(base64_decode('"); // 35 $count_chars_end = strlen("'))); ?><?"); // 10 $string = gzinflate(base64_decode(__string__)); for ($i=0; $i<35; $i++) { echo ('#'.$i.' '.htmlspecialchars($string).'<br>'); $string = gzinflate(base64_decode(substr($string, $count_chars_begin, -$count_chars_end))); } ?> Всем спасибо за содействие.
PHP: // Защита от нубов! // Ничего интересного под base64 нет :-) Скорее уж спортивный интерес для самоутверждения. Теперь могу смело сказать - что не такой уж я нуб... )