XSS-labs通关little心得
获取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错误,换了几个浏览器都不行,望大佬斧正。