Ho un parametro, chiamiamolo p che normalmente accetta true o false come una stringa.
Posso inviare il seguente comando e verrà stampato, l'unica cosa che impedisce l'esecuzione dello script è % -sign dopo < .
p=true<%img%20src%3d"x"%20onerror%3dalert(document.cookie);>
Ed ecco il problema, posso solo inviare script che non verranno eseguiti. Se invio un html / script corretto, il server restituisce HTTP/1.1 200 OK ma con una risposta vuota. Ma dal momento che il server accetta <> non voglio rinunciare ancora.
Dalle risposte che ho inviato, penso che < debba essere seguito da un carattere non alfabetico per l'esecuzione del codice, o %** tranne per alcuni valori ex %2f e %21 . Posso inviare valori con codifica URL che vengono stampati come testo in chiaro nell'applicazione, ma nessun carattere alfabetico che ho provato funziona, ad esempio %73 per s restituisce una risposta vuota.
Qualche idea su cosa posso provare di più?
Esempio delle cose che ho provato:
Richiedi risposta di risposta:
<%img%20src%3d"x"%20onerror%3dalert(document.cookie);>
<%script>alert(1)<%/script>
<"script>alert(1)<"/script>
<%A1cript>alert(1)<%A1script>
<%script>alert(1)<%2escript>
<%script>alert(1)<"%2fscript>
<%script>alert(1)<%20script>
<%script>alert(1)<%30script>
<%script>alert(1)<%40script>
<@script>alert(1)<@/script>
<1script>alert(1)<1/script>
Risposta vuota:
<img%20src%3d"x"%20onerror%3dalert(document.cookie);>
<script>alert(1)</script>
<%script>alert(1)</script>
<script>alert(1)<%/script>
<%73cript>alert(1)<%2Fscript>
<%script>alert(1)<%2fscript>
<%script>alert(1)<%21script>
<%script>alert(1)<%50script>
<%00script>alert(1)<%script>
Se invio richieste con %0* o %1* ottengo: HTTP/1.1 500 Internal Server Error . Tuttavia, l'errore che viene stampato indica Bad Request
<%script>alert(1)<%1escript>
400 Bad Request - Illegal XML character found among arguments: facets: p:<%script>alert(1)<\u001Escript>