PDA

Просмотр полной версии : Помогите сделать скрипт...


Iceangel_
01.11.2007, 08:28
Помогите сделать скрипт, чтобы он открывал файл php, заменял функцию eval(она стоит в самом начале) на echo , выполнял полученный скрипт, и если в результате находил в коде eval(gzinflate(base64_decode())), то повторял процедуру.
З.Ы. Буду очень благодарен, любой помощи...
З.ы.Ы Если кому надо, могу за помощь +6 поставить... ;-)


Более подробно:
Имеется php скрипт, в котором есть одна команда eval(gzinflate(base64_decode('Здесь длинный-длинный код')));
Мне нужно узнать php код который выполняется.
Я пробовал подставлять вместо eval echo, в результате
таже самая функция , только декодируется уже другой код, и так я 4 раза пробовал декодировать вручную этот текст, поэтому нужно сделать цикл, который меняет евал на екхо, запускает полученный скрипт, в результате собирает со страницы то, что вывела екхо(там снова будет eval(gzinflate(base64_decode('Здесь длинный-длинный код'))); ), и так столько раз, пока не выявится исходный текст скрипта.

.::Gh0st::.
01.11.2007, 09:27
для начала создаем файл script.php, над которым будут проводиться операции

<?
eval("\$str = \"$str\";");
?>


затем код оперирущего скрипта

<?
$filename = "script.php";

$rh = fopen($filename, "r");

$filedata = fread($rh, filesize($filename));
if (preg_match("/eval\(.*\);/i", $filedata))
{
$backup = preg_split("/eval\(.*\);/i", $filedata);
$params = preg_split("/eval\(|\);/i", $filedata);
$data = $backup[0]."echo ".$params[1].";".$backup[1];
$wh = fopen($filename, "w");
fwrite($wh, $data);
fclose($wh);
}

fclose($rh);

// execution
$fullpath = realpath("./");
passthru("php $fullpath/script.php");
?>


пока что не реализовано (потому как не понял, что ты имел ввиду)

и если в результате находил в коде eval(gzinflate(base64_decode())), то повторял процедуру.


запускается скрипт, ищет eval() - пока что при условии что он один (если предполагается что их несколько - скажи - переделаю). далее бэкапится все до eval() и после. внутри eval() выдирается все, что было между скобок. затем открываем файл заного, вставляем все, что было до eval(), вставляем echo и все что было между скобок в eval() и все что после eval. работоспособность проверил, но только при учете что eval() в скрипте один, если несколько, надо сделать построчное чтение из файла и немного изменить обработку. затем скрипт запускается из командной строки командой

php full/path/to/file/script.php

.::Gh0st::.
16.11.2007, 12:54
итак, в одной строке было зашифрован код рст шелла от електа. код шелла во вложениях.

код моего скрипта:

<?
$filename = "1.txt";
$rh = fopen($filename, "r");
$filedata = fread($rh, filesize($filename));

while(preg_match("/eval\(gzinflate\(base64_decode\('(.*)'\)\)\);/i", $filedata) === 1)
{
$rh = fopen($filename, "r");
$filedata = fread($rh, filesize($filename));

if (preg_match("/eval\(gzinflate\(base64_decode\('(.*)'\)\)\);/i", $filedata))
{
$params = preg_split("/eval\(|\);/i", $filedata);

ob_start();
eval("echo $params[1];");
$newstr = ob_get_contents();
ob_end_clean();

$wh = fopen($filename, "w");
fwrite($wh, $newstr);
fclose($wh);
}
fclose($rh);
}
?>

Iceangel_
16.11.2007, 14:42
Огромное спасибо за оказанную помощь, в жизнь не забуду... =)