On Tue, Apr 08, 2008 at 11:29:01PM +0200, gollum1 wrote: > Non funziona con entrambi i pezzi di codice, non mi ? molto chiaro il codice > che hai fatto... vediamo se sono riuscito a capirlo...
Uhmm da me funziona, e tra le altre cose si evince dai nomi delle
funzioni presenti che si tratta di un footer.php si un wordpress :)
Detto questo:
> praticamente togli le parentesi per il codice php <? ?> e poi il sostituisci
> eval con print_r
>
> non riesco a capire perch? ora togli ancora le parentesi del codice php...
> non
> ci sono pi?, visto che quello che rimane? il codice criptato...
Perche' in pratica quell'offuscazione altro non e' che:
prendo un codice, lo trasformo gzippo, lo trasformo in base64, ne faccio
un rot13, prendo cio' ch e' uscito e ripeto tutta l'operazione da
capo... e cosi' via per 42 volte.
Quindi io non faccio altro che fare un ciclo con l'operazione inversa,
trasformo l'eval in print_r() pulendo eventuali <? ?> che romperebbero
poi, faccio un ob_start per far si che eval() della mia stringa
trasformata con la print_r possa essere catturata in una stringa,
controllo se pulendo ulteriormente <? e simili inizia con eval, se si
ripeto l'operazione e cosi' via fino a quando non e' piu iniziante con
eval. A quel punto so di avere il codice "vero" e lo printo.
> ob_start() quindi se non ho capito male fai eseguire quello che ? rimasto del
> codice, lo catturi in un buffer e lo riassegni a $file, quindi ripulisci il
> buffer, quindi fai ripetere il ciclo fino a che trova un eval... quando
> finisce un eval quello che rimane dovrebbe essere il codice in chiaro...
>
> evidentemente si ferma all'ultimo ciclo, perch? in uscita ho ancora il codice
> offuscato...
Be l'ho scritto grezzamente in due secondi, ovviamente si puo' far di
meglio, comunque se semplicemente pigli anche a mano, cambi eval con
print_r e redirigi su un file, avrai ancora codice offuscato, ripeti il
cambio di eval con print_r e salvi su un terzo file.. e cosi' via per 42
volte, alla fine avrai il codice in chiaro.
> rimango dell'idea che comunque sia un sistema abbastanza stupido di offuscare
> del codice, tanto si riesce a decriptarlo comunque, ma in compenso, i server
> web che devono ad ogni richiesta di una pagina fare tutto questo lavoro, non
> si troveranno un po' sovracarichi? (naturalmente per un sito che abbia un
> gran volume di collegamenti)
Assolutamente corretto. Offuscare il codice in quel modo e'
semi-inutile, serve solo a fermare persone che di php davvero non
conoscono NULLA (ok, non sono poche), ma chi ha un minimo di esperienza
o comunque basi di programmazione anche scarse e' in grado di ricavarne
tranquillamente il sorgente, al costo di far fare la bellezza di 42 eval
e trasformazioni varie che ovviamente appesantiscono molto il tutto.
Insomma, e' inutile e dannoso. Esistono poi altri metodi migliori,
molti proprietari e anche qualcuno open source come l'estensione
bcompiler che sta in pear, che fondamentalmente si basano sul
byte-compilare il codice php con un'operazione one-way only. In quel
modo risalire al codice sorgente *preciso* e' impossibile, anche queste
operazioni sono comunque reversabili lavorando in maniera piu' "interna"
a php, ma almeno garantiscono un livello di sicurezza piu' elevato ( per
quanto lo si possa elevare non e' comunque assoluto ) ad un costo
computazionale decisamente inferiore.
comunque:
dedalo:/home/nextime/MAIL/allegati> cat a.php
#!/usr/bin/php5
<?
$fd = fopen("footer.php", "r");
$file = fread($fd, filesize("footer.php"));
fclose($fd);
$done=FALSE;
$ciclo=1;
while(!$done) {
$fclean = str_replace("?><?", "", $file);
$fclean = str_replace("<?", "", $fclean);
$fclean = str_replace(" ","", $fclean);
if(substr($fclean, 0, 4) == 'eval') {
$fclean=str_replace("eval(", "print_r(", $file);
$fclean = str_replace("?><?", "", $fclean);
$fclean = str_replace("<?", "", $fclean);
$fclean = str_replace("?>", "", $fclean);
ob_start();
eval($fclean);
$file = ob_get_contents();
ob_end_clean();
} else {
print_r($file);
$done=TRUE;
}
$ciclo++;
}
?>
dedalo:/home/nextime/MAIL/allegati> ./a.php
?> <!-- Sidebar -->
<div class="sidebar sidebar-right">
<h3>Categories</h3>
<ul>
<?php wp_list_categories('title_li=');
?>
</ul>
<h3>Blogroll</h3>
<ul>
<?php
wp_list_bookmarks('categorize=0&title_li='); ?>
</ul>
<?php if ( !function_exists('dynamic_sidebar')
|| !dynamic_sidebar(2) ) : ?>
<?php endif; ?>
</div>
<!-- Sidebar -->
<div class="clear"></div>
</div></div></div>
<!-- /Main -->
<!-- Footer -->
<div id="footer">
<!-- Copyright -->
<div id="copyright">
Designed By: <a
href="http://www.imrealestateagent.com">Real Estate Agents</a><br /><a
href="http://www.sinksusa.com">Undermount Stainless Steel Kitchen
Sinks</a> : <a
href="http://www.amlaspain.com/p-charleston-real-estate.html">Mount
Pleasant SC Real estate</a> : <a
href="http://www.propertyflippinginfo.com">House Flipping</a>
</div>
<!-- /Copyright -->
</div>
<!-- Footer -->
</div>
<!-- /Page -->
<?php wp_footer(); ?>
</body>
</html><? dedalo:/home/nextime/MAIL/allegati>
--
Franco (nextime) Lanza
Busto Arsizio - Italy
SIP://[EMAIL PROTECTED]
NO TCPA: http://www.no1984.org
you can download my public key at:
http://danex.nexlab.it/nextime.asc || Key Servers
Key ID = D6132D50
Key fingerprint = 66ED 5211 9D59 DA53 1DF7 4189 DFED F580 D613 2D50
-----------------------------------
echo
16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D212153574F444E49572045535520454D20454B414D204F54204847554F4E452059415020544F4E4E4143205345544147204C4C4942snlbxq
| dc
-----------------------------------
signature.asc
Description: PGP signature

