Reflected XSS into a JavaScript string with angle brackets HTML encoded – PortSwigger Write Up

En este post vamos a estar resolviendo el laboratorio de PortSwigger: “Reflected XSS into a JavaScript string with angle brackets HTML encoded.”


En este caso, para resolver el reto tenemos que inyectar un payload que escape del string donde se encuentra y llame a la función alert.

Lo primero de todo es acceder al laboratorio:


Una vez accedemos, nos encontramos ante una barra de búsqueda, por lo que vamos a usarla buscando una palabra aleatoria:


Cuando hacemos la búsqueda, podemos observar como la palabra que hemos buscado, se encuentra, entre otros sitios en la siguiente parte del código fuente.


Como podemos observar, es un string. Puedes pensar, ok, cierro la variable, pongo un alert y listo, una cosa así:

  • var searchTerms= ‘ alert(‘XSS’) ‘

Pero esto no es válido, ya que JavaScript no permite espacios en una variable, por esa misma razón para que toda la cadena se tome como parte de la variable, y aun así, el alert se ejecute, se concatena usando un guion. En el siguiente >

Dicho esto, colocamos un payload como:

  • ’ ‘-alert(‘XSS’)-‘ ‘


Y cuando le demos a buscar:


Se habrá ejecutado el alert. En el código fuente, se verá de la siguiente forma:


Con esto, completamos el laboratorio:


¡Un saludo y espero que os sirva de apoyo!