¿Por qué las cadenas XSS a menudo comienzan con "?

37

Una de las formas en que se puede explotar XSS es usar la siguiente etiqueta:

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

Aquí, ¿cuál es el significado de "> antes del script (etiqueta <script> ) y por qué se utiliza?

    
pregunta Tushar 28.12.2016 - 06:35
fuente

1 respuesta

75

De esta manera, se escapa de un atributo de doble comilla ( " ) y cierra la etiqueta anterior ( > ) antes de abrir una etiqueta de script que contenga su carga útil. Es uno de los patrones XSS más básicos.

Ejemplo:

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

Con tu secuencia se convierte en:

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

Tenga en cuenta que su vector solo funciona si las entidades HTML no se filtran.

Entonces, si no puedes escapar de ese atributo, es seguro para XSS. Esto no se activa:

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

Puede ver la misma idea con XSS dentro de Javascript (por ejemplo, '); para finalizar una cadena y una llamada de función) o con inyecciones de SQL. Los primeros caracteres de una secuencia de inyección a menudo tienen el propósito de escapar del contexto actual.

En cuanto a la obligatoria tira de inyección de xkcd de SQL de @ Mindwin , circulé libremente la parte a la que me refiero:

    
respondido por el Arminius 28.12.2016 - 07:25
fuente

Lea otras preguntas en las etiquetas