The Spanner logo
    • Home
    • Blog
      • Blog home
      • RSS
    • Login
    • Home
    • Blog
      • Blog home
      • RSS
    • Login
    The Spanner logo

    The Spanner
    Web security blog

    Made by Gareth Heyes
    Follow me on Twitter: @garethheyes

    Javascript for hackers!

    Hackvertor logo
    Shazzer logo
    My Github account
    Recent posts
    Introducing Feedworm: A Privacy-First RSS Reader That Lives in DevToolsSpeedy RSVP extensionAutoVaderHackvertor history and tag finderShadow Repeater v1.2.3 releaseBurp Hackvertor v2.1.24 releaseHacking roomsXSSing TypeErrors in SafarivalueOf: Another way to get thisMaking the Unexploitable Exploitable with X-Mixed-Replace on FirefoxThe curious case of the evt parameterCSS-Only Tic Tac Toe ChallengeRewriting relative urls with the base tag in SafariBypassing DOMPurify with mXSSNew IE mutation vectorHow I smashed MentalJSMentalJS DOM bypassAnother XSS auditor bypassXSS Auditor bypassBypassing the IE XSS filterUnbreakable filterMentalJS bypassesmXSSJava SerializationBypassing the XSS filter using function reassignmentRPOSandboxed jQueryX-Domain scroll detection on IE using focusEpic fail IEnew operatorDecoding complex non-alphanumeric JavaScriptHacking FirefoxDOM ClobberingBypassing XSS AuditorThe evolution of codeNon-Alpha PHP in 6-7 charsetTweetable PHP-Non AlphaMentalJS for PHPOpera x domain with video tutorialSandboxing and parsing jQuery in 100ms

    Hacking rooms

    By Gareth Heyes (@hackvertor)

    Published 11 months ago • Last updated June 17, 2025 • ⏱️ < 1 min read

    ← Back to articles

    Hacking room

    I wanted to learn WebSockets, since I’d never done any development work with them before. I had this idea stuck in my head - using HackPad to test multiple browsers simultaneously - because constantly switching between browsers to test edits was frustrating. That led to the concept of Hacking Rooms: a simple chat channel where you can test HTML flaws by sending messages to HackPad as you try out different vectors.

    It took around 3 days to build and it's still a bit rough around the edges but it's already useable and I found an interesting HTML flaw on Safari and Chrome on my lunch hour!

    Check it out! Hacking room

    And here is the vector I found:

    <svg><title><![CDATA[--></title><img src onerror=alert(1)>]]>

    I use a title tag and a CDATA section, in a CDATA you are supposed to be able to use tags without them being rendered until the closing section is found ]]> but Chrome and Safari convert it to a comment which allows you to "break out" of the CDATA using a closing comment tag. You can see a video of how I found it here:

    Video demo

    ← Back to articles