Oggi volevo provare a modificare un tema wordpress che sto utilizzando su un blog, apro il footer e mi trovo una stringa del genere
eval(gzinflate(str_rot13(base64_decode( HJ3xcml .... 3//78B ))));
questo è il risultato di una tecnica utilizzata per offuscare il codice php/html inserito ed evitare che venga modificato, spesso per conservare il link e i credits degli sviluppatori. Siccome mi sembra una stronzata inutile, e proprio perché hanno fatto questa cosa toglierò i credits del tema originale visto che sarà completamente diverso il codice
, vediamo come decodificare il tutto ed ottenere il codice originale.
Il procedimento non è difficile, intuitivamente si capisce che se a eval si sostituisce un assegnamento di una variabile otteniamo il codice decodificato, ma sarebbe stato troppo stupido se fosse stato così, diciamo che è troppo stupido-epsilon perché la prima volta si otterrà una stringa simile a quella iniziale (sempre codificata). Basta ciclare più volte sulla stringa ottenuta fino ad ottenere il codice in chiaro. Ecco un semplice script PHP che fà quello che ho spiegato di sopra.
<?php
// incollare la stringa codificata contenuta nel file
$contents= "<?eval(gzinflate(str_rot13(base64_decode('Hcl....8B'))));?>";
// ciclo per decodificare
while (preg_match("/eval(gzinflate/",$contents)) {
$contents=preg_replace("/<?|?>/", "", $contents);
echo "<pre>";
echo $contents;
echo "</pre>";
eval(preg_replace("/eval/", "$contents=", $contents));
}
$file = fopen("wordpress_theme_decoded.txt","w+");
fwrite($file,$contents);
fclose($file);
?>
Ecco tutto… vi troverete nel file wordpress_theme_decoded.txt il codice originale in chiaro, se proprio siete buoni continuate a lasciare i credits, altrimenti…
Popularity: 1% [?]









