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编码即可

相关推荐
浪浪山_大橙子2 小时前
吃透 CSS 常用函数:从布局到美化,18 个高频函数让样式写得又快又优雅
前端
我是ed.2 小时前
Vue3 图片标注插件 AILabel
前端·vue3·标注·ailabel
关于不上作者榜就原神启动那件事2 小时前
Spring Data Redis 使用详解
java·redis·spring
晚星star2 小时前
《深入浅出 Node.js》第四章:异步编程 详细总结
前端·node.js
无心使然2 小时前
vant实现自定义日期时间选择器(年月日时分秒)
前端·vue.js
鱼鱼块2 小时前
React 组件通信实战:从 props 入门到父子协作闭环
前端·react.js·面试
龙猫不热2 小时前
THREE.js 关于Material基类下的depthTest 和 depthWrite的理解
前端·three.js
invicinble2 小时前
java集合类(二)--map
java·开发语言·python
Mr-Wanter2 小时前
搭建局域网时间同步服务器
java·运维·服务器