DOMANDA Funzione PHP ricerca GET/POST

Pubblicità
Per quanto riguarda DOMDocument::loadHTMLfile() necessita di un file locale. Te la puoi cavare in questa maniera:

PHP:
// file_get_contents accetta un path ad una risorsa locale, oppure un documento remoto, come in questo caso
// (qui ignoriamo eventuali errori (return: false), se vuoi puoi gestire il caso)
$html = file_get_contents('http://127.0.0.1/Progetto/index.php');
// DOMDocument::loadHTML accetta come parametro una stringa contenente il codice HTML sopra scaricato
$doc->loadHTML($html);

ref: http://php.net/manual/en/domdocument.loadhtml.php
ref: http://php.net/manual/en/domdocument.loadhtmlfile.php
 
Per quanto riguarda DOMDocument::loadHTMLfile() necessita di un file locale. Te la puoi cavare in questa maniera:

PHP:
// file_get_contents accetta un path ad una risorsa locale, oppure un documento remoto, come in questo caso
// (qui ignoriamo eventuali errori (return: false), se vuoi puoi gestire il caso)
$html = file_get_contents('http://127.0.0.1/Progetto/index.php');
// DOMDocument::loadHTML accetta come parametro una stringa contenente il codice HTML sopra scaricato
$doc->loadHTML($html);

ref: http://php.net/manual/en/domdocument.loadhtml.php
ref: http://php.net/manual/en/domdocument.loadhtmlfile.php


Eh si ma avevo provato anche semplicemente cambiando il codice del file test.html che è locale e continuava a dare gli stessi errori. Per quello dicevo che non capivo quale poteva essere il problema. In ogni caso pur scrivendo come hai detto te gli errori che da sono sempre gli stessi purtroppo..

Praticamente, se provo il codice test.html scritto da te funziona, se provo un vecchio codice html scritto da me funziona. Se provo a scrivere il codice html della mia pagina di ora non funziona, sia se è in locale che se è online. Stessa cosa vale per altre pagine. Se scarico il codice di una pagina da internet e lo metto dentro "test.html" o se metto direttamente l'url la situazione non cambia
 
Allora posta l'HTML della pagina incriminata, magari c'è qualche eccezione da gestire, oppure la query XPath è sbagliata :)
HTML:
<!DOCTYPE html>
<html lang="it" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>XSS ATTACK</title>
    <link rel="stylesheet" href="css/bootstrap.min.css">
  </head>
  <body>
  <div class="container">
    <a href="http://127.0.0.1/Progetto/index.php">
    <h1 class="text-center">
      Procedura HTML5 Per Cross Site Scripting
    </h1>
    </a>
    <hr>
    <form method="post" action="index.php">
      <div class="form-group">
        <label class="lead" for="urlXSS">Inserire l'URL su cui si vorrebbe tentare l'attacco, preceduto dal protocollo : </label>
        <input type="url" class="form-control" id="urlXSS" name="urlXSS" placeholder="http://testphp.vulnweb.com/search.php">
        <br>
        <hr>
        <input id="ver" name="ver" type="submit" value="Verifica" class="btn btn-primary btn-large btn-block">
      </div>
    </form>
    <form name="actbtnDOM" method="post">
      <input  id="btnDOM" name="btnDOM" type="submit" disabled="disabled" value="Ottieni il DOM" class="btn btn-primary btn-large btn-block">
    </form>
    <br>
    <form name="actbtnVUL" method="post">
      <input  id="btnVUL" name="btnVUL" type="submit" disabled="disabled" value="Ottieni possibili vulnerabilità" class="btn btn-primary btn-large btn-block">
    </form>
   <details> <!--PROCEDURA ESTRAZIONE DOM -->
      <summary> Codice della pagina da analizzare </summary>
        <pre>
          <code>
            <p name='code' class='code' style="height:100%;">

          </p>
        </code>
     </pre>
      </details>
   <details> <!--PROCEDURA ESTRAZIONE COSRTUTTI ATTACCABILI -->
     <summary> Costrutti possibili da attaccare </summary>
       <pre>
         <code>
           <p name='code' class='code' style="height:100%;">

         </p>
       </code>
    </pre>
    </details>
  </div>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
  </body>
</html>

Questo è il codice della mia pagina senza la parte in php, che tanto non verrebbe letta essendo un file html di prova. Non metto in dubbio ci possano essere errori nella mia pagina eh, ma prendendo appunto una pagina qualsiasi dal web da gli stessi errori.. Per questo l'opzione di correggere la mia pagina è una buona idea anche se non risolverebbe il problema
 
Mmmm a quanto pare il problema risiede nella libreria standard di PHP che non supporta bene i tag HTML5 (una classe molto usata devo dire xD).

A questo punto (e solo a questo) ti consiglio di usare una libreria dedicata, che potrebbe anche essere la libreria da te provata (ma immagino ce ne siano anche tante altre). Bisogna solo vedere se le librerie si basano alla fine su un DOMDocument oppure no. In alternativa puoi sempre parsare la pagina HTML "old style" tokenizzando carattere per carattere e ricostruire la struttura, ma dovrebbe essere solo l'ultima spiaggia come risorsa.
 
Scusami ma quando intendi usare una libreria dedicata, intendi per parsare la pagina giusto?
Quella che avevo usato io nel caso di pagine semplici non dava errori, nel caso di pagine complicate semplicemente non leggeva <input> se non era direttamente dopo il form. Quindi a sto punto devo semplicemente vedere come fare quello che hai fatto te con le funzioni presenti nella libreria che sto usando no?
 
Finalmente ho trovato una libreria che sembra funzionare!!

PHP:
<?php

require_once 'html5lib-php-master/library/HTML5/Parser.php';

/** @var DOMDocument $doc */
$doc = HTML5_Parser::parse(file_get_contents(__DIR__.DIRECTORY_SEPARATOR.'test.html'));
$xpath = new DOMXpath($doc);

$forms = $xpath->query('//form');

foreach ($forms as $i => $form) {
    echo "Found form #$i\n";
    /** @var DOMElement[] $inputs */
    $inputs = $xpath->query('//input', $form);
    foreach ($inputs as $input) {
        echo "- Found input!\n";
    }
}

La libreria è la seguente: https://github.com/html5lib/html5lib-php

Di fatto utilizza ancora DOMDocument, però bypassa il parsing standard ed usa uno proprio suo.
 
Lo ho provato alla svelta e sembra funzionare bene anche con altri siti. Appena riesco a provarlo e adattarlo ti faccio sapere. Intanto grazie per tutto :)
 
Pubblicità
Pubblicità
Indietro
Top