以前囫囵吞枣做过一遍,现在从头再来
第一关网址为:http://127.0.0.1/xss-labs-master/level1.php?name=test
而页面上显示了用户test,name可控,查看其源代码为
构造
页面源代码就变成了:
故payload为:
这里h2标签里面能够执行js代码,所以我们不进行闭合,有一些HTML标签中不执行JS代码,例如:
等标签就需要进行相应的闭合,再插入JS代码进行执行。
另外除了alert外,进行弹窗还可以使用confirm或者prompt函数。
输入payload通过第一关
简单检测一下过滤情况
可以看到输入的payload在两个位置输出,再查看源代码,检查过滤情况
可以看到第一个框中的 < > 被转义了,而第二个框中没有被转义,所以我们从第二个框进行XSS的突破
根据源码构造payload
通过第二关
还是使用简单payload进行过滤检测
可以看到这两个框内都进行了XSS特殊字符的转义
查看源代码:
可以看到显示的地方使用 htmlspecialchars 函数进行了特殊字符的转义
而第三关与第二关除了 input标签里面进行了转义之外,value值包裹符号从双引号变成了单引号,也就是本关的突破点。
关于 htmlspecialchars 函数,有
可以看出来,该函数默认仅编码双引号,而value值包裹符号为单引号,我们可以进行相应闭合,构造payload为
进入第四关
输入检测过滤
查看源代码转义情况
可以看到第一红框内部进行了转义,而第二红框内部没有转义。
根据input标签显示情况来使用双引号进行闭合。
进入第五关
简单检测过滤
可以看到同样 input 里面没有进行转义,尝试使用上一关的payload
可见onclick 变成了o_nclick ,中间使用下划线将其分离
查看源代码过滤情况,关键部分为:
对关键字进行了替换,同时使用strtolower函数进行了字符串小写转换,禁止了大小写绕过
使用href超链接指向javascript代码,执行alert弹窗函数
payload为:
点击弹窗通过