xss攻击
前言: xss也是web安全中的一种常见的攻击方式,想要学习,就先要了解是什么。
xss攻击的定义:
XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets,
CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。
只是看概念是没意思的,要想真正的了解就要通过练习题目才能更加具体的感受。
level1
第一题非常简单就用,最普通的注入语句就可以了
<script>alert(/hacker)</scrip>
level 2
输入了简单的注入语句后,查看源代码
要想语句起作用,就要把input
给闭合掉,可输入
"><script>alert(/hacker/)</script>
level3
输入简单注入语句后查看源代码
<input name=keyword value='<script>alert(/hacker/)</script>'>
可以看出<
和>
被转义
就可以用另一种攻击方式,用onclick 事件,onclick 事件会在元素被点击时发生。onclick 事件直接包含在<>内,并且可以被执行。再观察页面源代码,是单引号,那就在前面加’把value给闭合掉。
payload
'onclick='javascript:alert(/hacker/>'
level 4
输入简单的注入语句后查看源代码
<input name=keyword value="scriptalert(/hacker/)/script">
<input type=submit name=submit value=搜索 />
观察到<和>直接被过滤掉了
那就用onclick 事件,这里是双引号,那就在前面输入",把value给闭合掉。
payload
"onclick="javascript:alert(/hacker/)"
level 5
输入onclick
注入语句后查看源代码
发现on中多了一个下划线,所以过滤了onclick事件,试试script,再看页面源代码,发现script也被过滤掉了。
那就用<a>
标签构造攻击语句试试。
payload
"><a href="javascript:alert(/xss/)">hacker</a>
也可以再后面加上//
注释掉后面的"/
,以免对前面的语句产生影响
level 6
输入onclick语句查看源代码发现被过滤,
再输入
<a>
标签语句查看源代码发现也被过滤了
这里过滤的是onclick,看到说可以改为大写试一下
payload
"ONCLICK="javascript:alert(/hacker/)"
看到有大佬还能用这样的语句
"><svg x="" Onclick=alert(1)>
level 7
输入scrip语句后查看源代码
可以看出<和>被过滤掉了,连关键字也被过滤掉了
可以用双写绕过
“<sscriptcript>alert(/hacker/)</sscriptcript>
这样是让其过滤掉中的script,但是一旦过滤掉,前后又可以重新拼接起来,形成一个完整的语句。
level8
输入了script语句查看源代码
可以看出script被过滤掉了,在这里应当用
<a>
标签语句,仔细看它也是有友情提示的,这里已经有<a>
标签,那么只用输出
javascript:alert(/hacker/)
查看源代码后发现script被过滤,换一种方式表达script
可以采用HTML字符实体转换
payload
javascript:alert(/hacker/)
方法二:用 html 的自解码机制就可以绕过(我倒是不会)
javascript:alert(0)
level9
输入注入语句
javascript:alert(/hacker/)
查看源代码
输入的语句并没有进入到 <a>
标签中,这里应该对格式有一定要求,在这里也有提示,要在后面输入http://
否则不合法。
payload
javascript:alert(/hacker/)//http://
level0
这道题连输入都没有,查看源代码
<input name="t_link" value="" type="hidden">
<input name="t_history" value="" type="hidden">
<input name="t_sort" value="" type="hidden">
</form>
可以先找到注入口
在查看源代码
可以看到t_sort
就是注入口了
就可以了!
继续加油,未完待续!