[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Che strumenti usereste voi per decodificare questo codice?



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://casa@casa.nexlab.it

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
-----------------------------------

Attachment: signature.asc
Description: PGP signature


Reply to: