Leggevo di JSf ** k . Dal loro sito web:
JSF**k is an esoteric and educational programming style based on the atomic parts of JavaScript. It uses only six different characters to write and execute code.
La mia domanda è: quando possiamo usare esattamente questo payload per sfruttare una vulnerabilità XSS? Ho provato il seguente semplice codice HTML per testarlo:
<html>
<img src=1 onerror="(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+[+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]" >
</html>
Ho appena sostituito alert(1)
con il corrispondente codice JSF ** k del testo in chiaro. Tuttavia, il browser non sembra rendere il carico utile. Quando scrivo il payload nella console di Chrome, viene visualizzato come una stringa "alert (1)" ma non funziona nel codice HTML precedente. Immagino che debba fare qualcosa con il modo in cui un browser rende questi payload (non sono pienamente consapevole di come / quando esattamente un browser restituisce vari tipi di payload).
Vorrei capire gli scenari in cui tali payload possono essere utili durante il test di un'applicazione web.
AGGIORNAMENTO: Come menzionato nella risposta, il metodo funziona quando si usa eval source invece della normale stringa alert (1). La mia domanda è, perché ho bisogno di una fonte eval? AFAIK, il browser deve eseguire la stringa passata all'attributo onerror come JavaScript.