前几天学习了XSS,现在来做点题目巩固一下
目录
练习平台
level1
页面内没有输入框,注入点在url里
http://test.ctf8.com/level1.php?name=<script>alert(1)</script>
level 2
首先尝试注入简单的script标签,发现页面没有出现弹窗,注入失败了,查看源码发现没有被解析,输入的内容被插入input标签的value中了
在script标签前面加上">闭合value,插入内容被解析,注入成功
"><script>alert(1)</script>
level 3 (onclick)
按上一题的payload输入发现没有被解析,而且没有绕过value
查看源码与level2的源码对比发现value是单引号而且将< "进行了实体化,故而不能采用绕过input的方法了,我们可以给用单引号绕过value后给input添加属性 ,这样就不需要输入<了
给input添加onclick属性,赋值为alert(1),成功被页面解析后点击输入框,出现弹窗
'onclick='alert(1)
level 4
输入level2的payload查看源码发现value采用了",并且过滤了<>,于是采用和level4一样的方法
"onclick="alert(1)
level 5(a标签的使用)
尝试了script标签和img标签,以及onclick,都会在单词中间添加_,并且大小写绕过也不管用,但是双引号和尖括号还是可以使用的
"><a href="javascript:alert(1)">
我们可以采用a标签,添加一个链接,成功传入后点击payload出现弹窗
level 6(大小写绕过)
用level5的payload发现href中间插入了_尝试采用大小写绕过,发现都可以成功绕过
"><a Href="javascript:alert(1)">
"><Script>alert(1)</script>
level 7(双写)
输入"><script>alert(1)</script>发现script被 过滤为空了,我们采用双写绕过
"><sscriptcript>alert(1)</sscriptcript>
level 8
输入"><script>alert(1)</script>查看源码发现在keyboard下被实体化了,但是输入的字符串还被插入了a标签内,但是script被过滤了尝试大小写
发现注入的字符串会被统一成小写,我实在不知道用什么办法可以绕过了,看了别的大佬的题解发现可以采用HTML实体化绕过
将script实体化成功绕过
javascript:alert(1)
level 9
尝试注入了好多东西发现都显示不合法,发现需要http://的存在才可以注入
于是可以构造payload,发现script被过滤了,用大小写也不能绕过,只能采用HTML实体化绕过
javascript:alert('http://')
payload:
javascript:alert('http://')
level 10
发现被>实体化了,<被过滤了 ,没有别的办法从这里注入了,看了大佬们的题解发现可以将input标签的type改为text,那里注入
payload:
http://test.ctf8.com/level10.php?t_link=123&t_history=&t_sort="onclick="alert(1)