Le entità di testo in HTML non possono fare nulla di interessante, e il contenuto tra tag span è interpretato come testo. Per fare qualcosa di interessante, devi iniettare una nuova entità (che è fatta usando < e > ), o avrai bisogno di inserire il tuo input in una posizione non di testo (come i parametri di un'entità o all'interno di un blocco <script> o simile). Se il tuo input non viene riflesso altrove, e < e > sono sempre codificati, non puoi sfruttare la pagina tramite XSS.
Tuttavia, potrebbero esserci modi per ingannare il server nell'inviare < non codificato e > senza che ciò significhi. Un modo che ho visto è di inviare caratteri Unicode che non sono <> ma che il server potrebbe mappare a quei caratteri ASCII prima di rifletterci nell'output. Prendi in considerazione caratteri come ˂˃ , ‹› , ≤≥ , <> , ognuno dei quali può essere mappato a <> da un server e quindi non essere codificato come < > . Nessuna garanzia, ma succede.