> For the complete documentation index, see [llms.txt](https://unsbotch.gitbook.io/unsbotch/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://unsbotch.gitbook.io/unsbotch/my-writeups/xssy/uppercase.md).

# UPPERCASE

UPPERCASE - great medium challenge with 5 solutions.

<figure><img src="/files/rG82jkNhiEJwjJiM8Nsw" alt=""><figcaption></figcaption></figure>

As always we will start testing the input entry points for simple XSS paylaod.

<figure><img src="/files/Flu8zNtu532wqg7hKnTx" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/9kBkiC3VYfxWrYC0KsU1" alt=""><figcaption></figcaption></figure>

But we can see that our payload was convert to uppercase and event handler `onerror` was circumcised.&#x20;

I have never use XSS payload in uppercase so because of that first thing i did, is to google "uppercase xss payloads".

<figure><img src="/files/g6bI8ikeP9qCsu4uNGay" alt=""><figcaption></figcaption></figure>

&#x20;I found a tweet from @BRuteLogic and tried to use him.

<figure><img src="/files/m2LEdCBPO8WCH2bz5AEX" alt=""><figcaption></figcaption></figure>

But as you can see we can't fully use this payload because of event handler filtering and i continued trying to bypass event handler filtering

<figure><img src="/files/JCF1kCcR9qRkPeLwpUcy" alt=""><figcaption></figcaption></figure>

I understood that the filter simply does not accept any events such as `onerror, onload, onmousemove` etc., and is triggered when something paired is used, for example RR.

But then i found intersting behavior of inputing event handler:

<figure><img src="/files/bBiKTekONxsATVFjvr7U" alt=""><figcaption></figcaption></figure>

If we just start adding a lot of letters containing "onerror" we can continue our "RR" and it s accept pair letters and "ERROR" too. So we can just try to add more letters and look at behavior how is locate.

<figure><img src="/files/Qmo8Xbjd1MGwWlVSdxsX" alt=""><figcaption></figcaption></figure>

Delete not needed chars and get works payload : `OoNnEonerror`.

<figure><img src="/files/6YW9l2ZABz5VY94whLOg" alt=""><figcaption></figcaption></figure>

It still will not work, so doing the same with `onload` handler and check @BRuteLogic payload:

By the same operation we got: `oonONonlOAD` now let's check final payload and get XSS.

`<SVG/oonONonlOAD="&#97&#108&#101&#114&#116(1)">` - don't forget to wrap value in quotes.

<figure><img src="/files/JhotUfqlCOudRY1PSeRm" alt=""><figcaption></figcaption></figure>

Great we got an xss, but this payload was for trigger alert, but for passing the lab we need to alert document.cookie, for that just change HTML encode value to ours.

<figure><img src="/files/uOHdwzq6mz9Zhn5NQnd6" alt=""><figcaption></figcaption></figure>

p.s not forget wrap in to quotes.

<figure><img src="/files/AjXwCjNUA9KMszd6re72" alt=""><figcaption></figcaption></figure>
