XSS游戏

XSS游戏-Warmups

Ma Spaghet!

在这里插入图片描述1. 尝试注入,输入aaaaaaaa
在这里插入图片描述
2. 显示在<h2>标签内在这里插入图片描述3. 输入标签,添加onmouseover属性值为alert(1337),JS解析运行
在这里插入图片描述

Jefff

在这里插入图片描述1. 闭合 ,破坏字符串拼接payload
在这里插入图片描述
在这里插入图片描述

Ugandan Knuckles

  1. 分析代码使用正则表达式 [<>] 来匹配并移除字符串中的 < 和 > 字符
    在这里插入图片描述
  2. 闭合 ” ,使用聚焦 onfocus 执行payload ,添加autoonfocus属性自动聚焦,绕过用户交互
    在这里插入图片描述

Ricardo Milos

在这里插入图片描述

  1. 直接输入 payload 尝试注入
    在这里插入图片描述

Ah That’s Hawt

  1. 分析代码使用正则表达式 /[()]/g来匹配并移除字符串中的( 、` 、) 和 \ 字符
    在这里插入图片描述
  2. 使用
  3. οnerrοr=location=“javascript:alert(1337)”:这是一个 onerror 事件处理程序,它会在图片加载失败时被触发。
    location=“javascript:alert(1337)” 试图在 onerror 事件中执行 JavaScript 代码。
    location 属性被用于执行 javascript: URL 作为一个脚本。
    在这里插入图片描述

Ligma

  1. 分析使用正则表达式 /[A-Za-z0-9]/g 将字符串中的所有字母和数字替换为空字符。
    结果是仅保留非字母和非数字字符的部分。例如,如果 balls 的值是 “alert(‘Hello’)”,在清理后将变成 “‘()’”。
    在这里插入图片描述
  2. 使用JSFuck将payload转码
    在这里插入图片描述
  3. 将转码后的payload转码URL
    在这里插入图片描述
  4. 注入payload

在这里插入图片描述

Mafia

  1. 分析slice(0, 50) 用于截取 mafia 字符串的前 50 个字符。这是为了限制处理的数据长度,防止过长的输入
  2. 使用正则表达式 /['"±!]/gi将字符串中的一些特殊字符(如反引号、单引号、双引号、加号、减号、感叹号、反斜杠、方括号)替换为下划线_
  3. 将 mafia 字符串中的 alert 替换为下划线 _
  4. JSFUCK不能用了
    在这里插入图片描述
  5. 大写绕过检测,toLowerCase()还原
    在这里插入图片描述
  6. 大写绕过检测,toLowerCase()还原,使用匿名函数执行payload
    在这里插入图片描述

Ok, Boomer

在这里插入图片描述

  1. DOMPurify.sanitize() 是一个库函数,用于清理并消除输入中的潜在恶意内容,从而防止 XSS 攻击
    在这里插入图片描述2. 来到 https://cdnjs.com/libraries/dompurify/2.0.7 查看有哪些过滤在这里插入图片描述

在这里插入图片描述

  1. 浏览器会自动将地址补全,所以需要用协议:地址的格式
    在这里插入图片描述3. 可以构造payload
?boomer=<a id=ok href=ftps:alert(1337)>

在这里插入图片描述

WW3

在这里插入图片描述

<div>
    <h4>Meme Code</h4>
    <textarea class="form-control" id="meme-code" rows="4"></textarea>
    <div id="notify"></div>
</div>

<script>
    /* Utils */
    const escape = (dirty) => unescape(dirty).replace(/[<>'"=]/g, '');
    const memeTemplate = (img, text) => {
        return (`<style>@import url('https://fonts.googleapis.com/css?family=Oswald:700&display=swap');`+
            `.meme-card{margin:0 auto;width:300px}.meme-card>img{width:300px}`+
            `.meme-card>h1{text-align:center;color:#fff;background:black;margin-top:-5px;`+
            `position:relative;font-family:Oswald,sans-serif;font-weight:700}</style>`+
            `<div class="meme-card"><img src="${img}"><h1>${text}</h1></div>`)
    }
    const memeGen = (that, notify) => {
        if (text && img) {
            template = memeTemplate(img, text)

            if (notify) {
                html = (`<div class="alert alert-warning" role="alert"><b>Meme</b> created from ${DOMPurify.sanitize(text)}</div>`)
            }

            setTimeout(_ => {
                $('#status').remove()
                notify ? ($('#notify').html(html)) : ''
                $('#meme-code').text(template)
            }, 1000)
        }
    }
</script>

<script>
    /* Main */
    let notify = false;
    let text = new URL(location).searchParams.get('text')
    let img = new URL(location).searchParams.get('img')
    if (text && img) {
        document.write(
            `<div class="alert alert-primary" role="alert" id="status">`+
            `<img class="circle" src="${escape(img)}" οnlοad="memeGen(this, notify)">`+
            `Creating meme... (${DOMPurify.sanitize(text)})</div>`
        )
    } else {
        $('#meme-code').text(memeTemplate('https://i.imgur.com/PdbDexI.jpg', 'When you get that WW3 draft letter'))
    }
</script>
  1. 分析:
    从 URL 查询参数中获取 text 和 img 的值。
    如果两个参数都存在:
    使用 document.write 创建一个 alert 样式的通知,提示正在生成 Meme,并加载图片。
    图片加载完成后调用 memeGen 函数来生成 Meme 和显示通知。
    如果 text 和 img 参数不存在:
    使用默认图片和文本生成 Meme 模板,并将其显示在 textarea 中。
    escape 函数用于清理输入,去除 URL 编码,并替换掉 <、>、'、" 和 = 等字符
  • payload:
?text=<img%20name%3dnotify><style><style%2F><script>alert(1337)%2F%2F&img=https://so2.360tres.com/sdm/420_207_/t01e5b5a11685455ccc.webp

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CyberSecure

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值