xss.pwnfunction.com闯关(1~6)

目录

第一关:

第二关:

第三关:

第四关:

第五关:

第六关:

第一关:

python 复制代码
"""
Difficulty is Easy.
Pop an alert(1337) on sandbox.pwnfunction.com.
No user interaction.
Cannot use https://sandbox.pwnfunction.com/?html=&js=&css=.
Tested on Chrome.
"""
html 复制代码
<h2 id="spaghet"></h2>
<script>
    spaghet.innerHTML = (new URL(location).searchParams.get('somebody') || "Somebody") + " Toucha Ma Spaghet!"
</script>

进入页面:

首先观察代码发现参数`somebody`,第一关没有使用什么过滤,只是浏览器自动过滤了<script></script>

直接使用<img src=1 οnerrοr=alert(1)>

第二关:

python 复制代码
"""
Difficulty is Easy.
Pop an alert(1337) on sandbox.pwnfunction.com.
No user interaction.
Cannot use https://sandbox.pwnfunction.com/?html=&js=&css=.
Tested on Chrome.
"""
html 复制代码
<h2 id="maname"></h2>
<script>
    let jeff = (new URL(location).searchParams.get('jeff') || "JEFFF")
    let ma = ""
    eval(`ma = "Ma name ${jeff}"`)
    setTimeout(_ => {
        maname.innerText = ma
    }, 1000)
</script>

进入首页:

观察代码发现参数`jeef`,将值传入`ma`中,最后将`ma`的值传给`maname`,

看到eval可以发现,恶意代码可以直接在ma中执行,可以不用走到下面的延迟函数,也可以让走到后面。并且发现代码中并没有什么过滤手段,因此只需要在jeff给ma传输数据的时候,让`alert(1)`事件发生在文本外就行,使用双引号闭合之前的双引号,分号闭合前面给ma的赋值文本,最后使用双斜杠注释掉末尾的双引号

因此无论是使用`";alert(1)//`还是`";javascript:alert(1)//`都可以

第三关:

python 复制代码
"""
Difficulty is Easy.
Pop an alert(1337) on sandbox.pwnfunction.com.
No user interaction.
Cannot use https://sandbox.pwnfunction.com/?html=&js=&css=.
Tested on Chrome.
"""
html 复制代码
<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在input标签内。而input标签有onfocus元素焦点事件属性,这个属性可以通过点击设置此属性的元素来触发,但是这就需要与用户交互了,而autofocus可以自动触发焦点事件,与onfocus联用可以触发不需要用户交互的操作。

代码:`2" autofocus οnfοcus="alert(1)"`

第四关:

python 复制代码
"""
Difficulty is Easy.
Pop an alert(1337) on sandbox.pwnfunction.com.
No user interaction.
Cannot use https://sandbox.pwnfunction.com/?html=&js=&css=.
Tested on Chrome.
"""
html 复制代码
<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>

进入首页:

分析代码发现参数`ricardo`,最终如果ricardo有值的话`ricardo.action`会将表单form中的action改为ricardo的值。由于action的值要跳转的话只能是url或协议字符串,因此直接选用JavaScript伪协议

代码:`javascript:alert(1)`

第五关:

python 复制代码
"""
Difficulty is Easy.
Pop an alert(1337) on sandbox.pwnfunction.com.
No user interaction.
Cannot use https://sandbox.pwnfunction.com/?html=&js=&css=.
Tested on Chrome.
"""
html 复制代码
<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`,首先将参数赋值给smith,然后过滤掉了括号、反引号和反斜杠,本来即使过滤了括号也可以使用反引号触发执行,但是现在两个都过滤了,因此可以考虑编码了,首先了解编码形式url编码最先执行,其次是HTML实体编码,最后是js编码。在这里js编码不适用,因为js编码不能给符号编码,因此考虑url编码,但是只使用url编码或HTML实体编码,第一种会被过滤掉,第二种不会被识别。因此我选用的是先用HTML实体编码给`(1)`编码,然后使用url编码,因为再导航栏中首先解码url编码,最后再页面内解码HTML编码

代码:`<img src=1 οnerrοr=alert%26%23x0028%3b%26%23x0031%3b%26%23x0029%3b>`

第六关:

python 复制代码
"""
Difficulty is Easy.
Pop an alert(1337) on sandbox.pwnfunction.com.
No user interaction.
Cannot use https://sandbox.pwnfunction.com/?html=&js=&css=.
Tested on Chrome.
"""
html 复制代码
balls = (new URL(location).searchParams.get('balls') || "Ninja has Ligma")
balls = balls.replace(/[A-Za-z0-9]/g, '')
eval(balls)

进入首页:

首页什么东西都没有,观察代码发现参数balls,但是这个参数最后过滤了所有大小写字母和数字,因此想到有另外一种编码方式,JSFuck编码,因为是将balls直接放在了eval内部因此直接执行alert(1)即可触发,因此需要将此代码编码,首先编写成JSFuck编码直接写入,导航栏会无法识别,因此给JSFuck编码外部在编码一次url编码即可

相关推荐
消失的旧时光-194315 分钟前
第十四课:Redis 在后端到底扮演什么角色?——缓存模型全景图
java·redis·缓存
BD_Marathon16 分钟前
设计模式——依赖倒转原则
java·开发语言·设计模式
鹏北海18 分钟前
micro-app 微前端项目部署指南
前端·nginx·微服务
BD_Marathon20 分钟前
设计模式——里氏替换原则
java·设计模式·里氏替换原则
发现一只大呆瓜21 分钟前
虚拟列表:从定高到动态高度的 Vue 3 & React 满分实现
前端·vue.js·react.js
Coder_Boy_22 分钟前
Deeplearning4j+ Spring Boot 电商用户复购预测案例中相关概念
java·人工智能·spring boot·后端·spring
css趣多多24 分钟前
add组件增删改的表单处理
java·服务器·前端
雨中飘荡的记忆26 分钟前
Spring Batch实战
java·spring
证榜样呀30 分钟前
2026 大专计算机专业必考证书推荐什么
大数据·前端
Java后端的Ai之路33 分钟前
【Spring全家桶】-一文弄懂Spring Cloud Gateway
java·后端·spring cloud·gateway