获取cookie:<script>alert(document.cookie)</script>

level-1

修改name属性的值,发现页面回显也随之变化,那么我们便可以考虑向此处插入js语句
图一

1
<script>alert(1)</script>

图二
点击搜索,成功,直接进入下一关。

level-2

直接在搜索框插入以下语句

1
<script>alert(1)</script>

发现通关失败。
右键-查看元素
图三
发现js语句被””号扩了起来,发挥不了作用,那么我们直接利用闭合的思想。填入payload,点击搜索,成功通关。

1
"><script>alert(1)</script>

level-3

来到第三关,啥也不想,直接把上一关的通关语句填入,失败,那好继续查看元素。
图四
发现很奇怪,明明就像第二关一样,利用了闭合的思想,那为什么还是通关不了。
这里要用到代码审计,查看源码
图五
后端利用htmlspecialchars()函数会将特殊字符进行转义,这里无法采用标签,因为标签都是带有”<”的。但该函数不会转义单引号,可以采用事件(onclick,可以实现和标签一样的功能)闭合标签。填入以下payload(注意闭合),点击搜索框(不是搜索,因为点击事件要在框内触发),成功。

1
'onclick='alert(1)

level-4

来到第四关,与第三关一样,把payload中的’换成”,之后点击搜索框即可。

1
"onclick="alert(1)

level-5

继续填入上关的payload,右键-查看元素,发现on被替换成o_n了。
图六
代码审计,发现过滤了script标签和on关键字。
没事,我们还有伪协议–超链接跳转。
填入下列palayload

1
"><a href="javascript:alert(1)">

之后页面会出现一个”>(一举两得,即闭合,又是超链接)的超链接
图七
点击这个链接,成功通关。

level-6

继续使用上一关的payload看行不行,发现不行,只好看代码了。
图八
不给活路啊,过滤了一大堆。
但细看,他并没有大小写转换啊,也就是说我可以利用大小写绕过,填入以下payload

1
"Onclick="alert(1)

点击搜索框,成功过关。

level-7

我继续输入上一关的payload,发现on直接被替换成空串了
图九
简单,尝试重(双)写绕过,看它是否循环过滤,填入以下payload

1
"oonnclick="alert(1)

点击搜索框,成功通关。

level-8

这里是把我们输入的payload点击添加友情链接后就可以直接跳转了,简单,填入以下payload,正好利用伪协议。

1
javascript:alert(1)

添加友链后,但是代码里面进行了script的替换
图十
那我们只要让代码识别不出是script就行,把script里面随便一个字母(如s)通过html编码,然后再通过url编码。
图十一

1
java%26%23%78%37%33%3bcript:alert(1)

理论上应该可以,但我通关失败,提示403错误,换了几个浏览器都不行,望大佬斧正。