前言: 前几天学了xss攻击,觉得有必要写一篇博客记录一下。
题目链接:
http://test.xss.tv
第一关:
http://test.xss.tv/level1.php?name=<script>alert(1)</script>
这一关直接可以触发弹出,没有任何套路
第二关:
查看网页源代码发现输入框里的输入的值会在input标签里的value=""里显示出来,所以我们只要先闭合前面的双引号和尖括号并把后面的东西注释掉,再在其中触发弹窗就可以通关
http://test.xss.tv/level2.php?keyword="><script>alert(1)</script>#
第三关:
我们用第二关的思想在输入框里输入
'><script>alert(1)</script>#
发现并没有什么反应,查看网页源代码后发现< > 都被过滤了
所以我们就不能用含有< >的Shallcode,这里我们换一种思路
在输入框里输入
'onclick='javascript:alert(1)''
注意: onclick是点击事件,所以要点一下输入框才会有弹窗。
第四关:
按照平常的思路,我们先来看一下网页有没有过滤什么字符,所以我先输入了
<> ' "
查看网页源代码后发现 < >被过滤掉了,我们试一下上一关的思路
"onclick='javascript:alert(1)'"
然后点一下输入框发现弹窗成功了
第五关:
我们先试一下前几关的思路,发现script和onclick都被过滤了
所以我们还得在换一种方法:
在输入框输入
"><a href='javascript:alert(1)'>点这里</a>#
这里的#本来是用来注释后面的内容的,但好像没有什么用,不加好像也没有影响,然后点一下“点这里”就可以通关了
第六关:
我们先试一下前几关的思路,发现script,onclick和 href 都被过滤了
所以我们这里要再换一种思路,这里我们用大小写绕过,我们还用上一题的方法,不过要用 E 来代替 e
"><a hrEf='javascript:alert(1)'>点这</a>#
然后点“点这”就可以通关了
第七关:
经过一番尝试,发现网页把关键字script,onclick的on和href都过滤没了,所以这里我们另想办法
这里我们用双写绕过,我们还用前面两题的思路,不过要把script替换成scrscriptipt,把 href 换hrhrefef
"><a hrhrefef='javascrscriptipt:alert(1)'>点这</a>#
由于网页会过滤掉script和href,所以我们把script替换成scrscriptipt,把 href 换hrhrefef后,经过网页过滤后我们输入的scrscriptipt和hrhrefe就成了script和href,所以我们就达到了我们的目的
第八关:
经过一番尝试,发现尖括号和双引号都被过滤了,script也被过滤了scr_ipt,这里我们用html实体编码绕过,把 r 转换成html实体编码 r ; 。
由于我们输入的东西都会在题目a标签里呈现
所以我们只需要在输入框里输入
javascript:alert(1)
然后点友情链接就可以通关了。
第九关:
这一关与上一关有些相似,也是会把你输入的内容呈现在 a 标签中,不同的是,如果你不加 http:// ,它会显示你输入的链接有问题,而不会显示我们输入的内容。
我们在上http://之后就可以知道它把script过滤成了scr_ipt了,我们把 r 换成html实体编码r ;再输入
javascript:alert(1)//http://
然后就可以通关了。
第十关:
经过一番分析和尝试后发现尖括号 < > 被过滤了,不过在 from 标签里发现有三个隐藏的输入框。
又经过一番尝试后发现只能从最后一个隐藏的输入框入手
keyword = test&t_sort="type="text" onclick = "alert(1)
onclick为点击事件,还需要点一下输入框才能触发。
第十一关
这一关要进行抓包
用burpsuite进行抓包
当抓到包以后,手动添加Referer: " onclick="alert(1) type="text"
进行伪造,然后forword进行发包。
然后触发点击事件就可以了。
第十二关
这一关也要抓包,然后构造http头部User-Agent的payload
User-Agent: "onclick=alert(1) type="text
然后forward发包
然后触发点击事件就可以了
第十三关
这一关要伪造cookie
同样进行抓包,然后修改cookie
Cookie: user=call+me+maybe%3F onclick=alert(1) type="text
然后forward发包
然后触发点击事件就可以了
后面的就先不打了,等后面有时间再打。
总结:
一般的绕过方法:
1、标签
闭合标签
"><script>alert(1)</script>
</script><script>alert(1)</script>
标签绕过
'onclick='javascript:alert(1)''
<a href='javascript:alert(1)'>点这里</a>
2、大小写绕过
<a hrEf='javascript:alert(1)'>点这</a>
3、双写绕过
<a hrhrefef='javascrscriptipt:alert(1)'>点这</a>
4、编码绕过
十六进制编码
jsfuck编码
url编码
unicode编码
5、burpsuite抓包,通过修改http请求头,伪造cookie等绕过