Perché le stringhe XSS iniziano spesso con "?

37

Uno dei modi, XSS può essere sfruttato, è quello di utilizzare il seguente tag:

"><script>alert(document.cookie)</script>

Qui, qual è il significato di "> prima dello script (tag <script> ) e perché viene usato?

    
posta Tushar 28.12.2016 - 06:35
fonte

1 risposta

75

In questo modo sfuggi a un attributo con doppia citazione ( " ) e chiudi il tag precedente ( > ) prima di aprire un tag script che contiene il tuo payload. È uno dei modelli XSS più basilari.

Esempio:

<input type="text" value="$XSS">

Con la tua sequenza diventa:

<input type="text" value=""><script>alert(document.cookie)</script>">
 ^- a completed tag                  ^- payload           garbage -^

Nota che il tuo vettore funziona solo se le entità HTML non sono filtrate.

Quindi, se non puoi sfuggire a quell'attributo, è sicuro per XSS. Questo non si attiva:

<input type="text" value="<script>alert(document.cookie)</script>">

Puoi vedere la stessa idea con XSS all'interno di Javascript (ad esempio '); per terminare una stringa e una chiamata di funzione) o con iniezioni SQL. I primi caratteri di una sequenza di iniezione spesso hanno lo scopo di sfuggire al contesto corrente.

Per quanto riguarda la sequenza xkcd dell'iniezione SQL di @ Mindwin, ho disegnato a mano libera la parte a cui mi riferisco:

    
risposta data 28.12.2016 - 07:25
fonte

Leggi altre domande sui tag