目录
话不多说
直奔主题
第一关
发现url上对name值的修改可以回显在页面,也就是反射型xss,直接写payload就行
第二关
在输入框输入第一关的payload发现能够回显但是不执行,检查网页源代码,发现被闭合了,所以这关去闭合就过了
payload: "><script>alert(1)</script>"
第三关
输入第一关payload检查网页源码发现<>被转义了,原因是htmlspecialchar()函数把符号转换为实体化标签,这是xss经常过滤的情况
这时使用其他payload:'οnclick='alert(1)就能通过
第四关
输入代码发现这关把我们的<>这个符号进行了删除
再输入表单的鼠标单击属性来测试“οnclick=”alert(1)发现和第三关是一样的
第五关
通过输入payload发现对script进行了替换,与此同时还对on进行了替换
这里使用新的payload:"><a href="javascript:alert(1)">" 要注意闭合符号
第六关
第六关和第五关一样,对一些特殊字符进行了替换
考虑到没有对大小写过滤,因此构造payload:"> <sCRipt>alert(1)</sCRipt>"
第七关
输入payload代码发现script被替换为空,其他字符也一样
这里想到之前文件上传的检测,考虑可能只对代码进行一次过滤
因此构造payload: "><scrscriptipt>alert(1)</scrscriptipt>"
第8关
输入代码发现也有对特殊字符和符号进行替换
因为在输入框输入的值会被传到<a href=" ">里面,因此考虑的是<a href="javascript:alert(1)">这种payload,而script关键词又会被替换,因此采用编码构造payload
payload:javascript:alert(123)
第九关
第九关和第八关一样,对特殊字符进行替换,用时还会判断输入的值是否存在“http://”
结合第八关思路,对javascript:alert(1)进行编码,再后面加上//http://(//这里起到注释作用)
payload:javascript:alert(1)//http://
结语
后续的关卡会继续更新