XSS挑战之旅
实验环境: 使用docker搭建靶场
实验步骤:
level 1
观察页面发现导航栏中name的值为什么页面就显示什么
查看源码,发现写入的数据在<>标签的外面
直接将name的值换成JS:<script>alert(1)</script>
level 2
使用第一关的方法尝试发现发现没有弹窗弹出,查看网页源码,发现<>都被过滤掉了,但value里面没有过滤掉。
尝试闭合value的值,输入 "><script>alert(1)</script>
成功弹出窗口。
level 3
尝试使用第二关的payload发现失败,查看源码,发现在value中也将”、<、>注释掉了
我们可以用一个单引号对value前面的单引号进行闭合,再用一个单引号对后面的单引号进行闭合,在value后加入onclick。输入此payload后,首先先将这条语句写入源码,再次点击输入框后进入下一关。
level 4
尝试输入第三关的payload,查看源码,发现这里使用的是双引号,所以这里我们将单引号改为双引号
同样的方法,代码执行成功
level 5
输入第四关的payload
发现它对onclick,onmouseover,script进行了加"_"的操作,尝试了大写也没有用,但<>这两符号能正常写入。
我们可以添加a标签的方法,然后点击链接就可以跳到下一关。
payload:”><a href=”javascript:alert(1)”></a>
level 6
输入上一关的payload查看源码
经试验后,它对script,onclick,href,onmouseover进行了加"_“操作,但对”<>做任何处理,而且能大写绕过,故这里可以运行许多payload。
payload:”ONLICK=”alert(1)
level 7
输入上一关的payload查看源码
经实验,它会把script,on,href直接过滤掉,这里因为它过滤掉了,我们就可以考虑它会过滤一次还是几次或是直到没有为止,这里就可以用双写href和script来绕过
level 8
输入上一关的payload,查看源码
用前几关的payload尝试后,发现转义了 " <>,所以不能使用script标签和a标签来做。但是我们发现第八关多出>了一个可以点击的“友情链接”,查看页面代码后,发现输入的内容会进入到已有的a标签中的href中。因>此我们不需要像以前一样闭合input标签,再添加a标签,我们可以直接输入javascript:alert(1)。
这里将script用实体编号绕过。也可以对script的一个字母进行实体编号。
javascript:alert(1)
level 9
使用上一关的payload,查看源码
与0x08有一个区别,就是检测你的网址中有没有http://,没有就直接报错,这是我们可以在0x08的payload的基础上附上http://即可
javascript:alert(1)//http://
level 10
使用上一关的payload,查看源码
因为没有输入口,只能从URL入手,参数keyword对输入的"><做了过滤,显然不能利用了。查看页面源码后发现有三个input标签是hidden的。我们尝试利用这三个标签完成攻击。与在输入框中输入代码类似,只是在url中需要指定标签name,且需要修改type属性为text使输入框显示出来
输入?t_sort=<script>alert(1)</script>
,发现过滤了<>
payload:?t_sort=123” onclick=”alert(1)” type=”text
level 11
查看源码
抓包
修改,放包
浏览器查看
level 12
查看源码,发现与user-agent有关
抓包
修改,放包
浏览器查看
level 13
首先查看源码,发现这次是cookie类型的XSS
构造payload:?user=" onmouseover=alert(1) type="text"
如有错误,欢迎批评指正[鞠躬]