当前位置: 首页 > ops >正文

深入理解浏览器解析机制和XSS向量编码

URL 编码 "javascript:alert(1)"---->%6a%61%76%61%73%63%72%69%70%74:%61%6c%65%72%74%28%31%29

<a href="%6a%61%76%61%73%63%72%69%70%74:%61%6c%65%72%74%28%31%29">aaa</a>-------浏览器解析不了。
页面识别在url解码之前,在识别标签和属性的时候还没解码,页面就不认识这串编码,不会把它们当作 JS 代码执行
<a href="&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:%61%6c%65%72%74%28%32%29">
页面识别的时候,已经进行HTML实体解码,变成了<a href="javascript:%61%6c%65%72%74%28%32%29">aaaaa</a>浏览器会识别它为可执行JS代码。
页面的解析顺序:html实体编码---->urlencode---->unicode
<a href="javascript%3aalert(3)"></a>
不能识别
因为“:”被url编码了,javascrip:才能被浏览器识别为可执行JS代码。
<div>&#60;img src=x onerror=alert(4)&#62;</div>---HTML字符实体编码 < 和 >
能解码但是无法解析
把“<”和“>”HTML实体编码后不会进入标签开始状态(涉及到html的状态机制)
<textarea><script>alert(6)</script></textarea>-----无法解析
RCDATA元素(RCDATA elements),有<textarea>和<title> 。可以容纳文本和字符引用。但是一旦有字符引用可能就无法进入标签开始状态大概率利用不了。
<script>&#97;&#108;&#101;&#114;&#116;&#40;&#57;&#41;&#59;</script>
原始文本元素(Raw text elements),有<script>和<style>,可以容纳文本。只能把里面的内容当做文本  利用不了
​
<script>\u0061\u006c\u0065\u0072\u0074(10);</script>
JavaScript引擎在解析代码时,会先处理Unicode转义,然后再执行代码。
解析后的代码:<script>alert(10);</script>
​
<script>\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0031\u0029</script>(JS严格区分大小写,不能对符号编码)
​
<script>\u0061\u006c\u0065\u0072\u0074(\u0031\u0032)</script>不能解析
JS将解码后,会认为它是一个字符串,字符串要用单引号引起来。
​
<a href="&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3a;&#x25;&#x35;&#x63;&#x25;&#x37;&#x35;&#x25;&#x33;&#x30;&#x25;&#x33;&#x30;&#x25;&#x33;&#x36;&#x25;&#x33;&#x31;&#x25;&#x35;&#x63;&#x25;&#x37;&#x35;&#x25;&#x33;&#x30;&#x25;&#x33;&#x30;&#x25;&#x33;&#x36;&#x25;&#x36;&#x33;&#x25;&#x35;&#x63;&#x25;&#x37;&#x35;&#x25;&#x33;&#x30;&#x25;&#x33;&#x30;&#x25;&#x33;&#x36;&#x25;&#x33;&#x35;&#x25;&#x35;&#x63;&#x25;&#x37;&#x35;&#x25;&#x33;&#x30;&#x25;&#x33;&#x30;&#x25;&#x33;&#x37;&#x25;&#x33;&#x32;&#x25;&#x35;&#x63;&#x25;&#x37;&#x35;&#x25;&#x33;&#x30;&#x25;&#x33;&#x30;&#x25;&#x33;&#x37;&#x25;&#x33;&#x34;&#x28;&#x31;&#x35;&#x29;">aaa</a>
首先被解码为javascript:%5c%75%30%30%36%31%5c%75%30%30%36%63%5c%75%30%30%36%35%5c%75%30%30%37%32%5c%75%30%30%37%34(15)
此时浏览器会识别它为可执行JS代码,然后会进行urlencode解码\u0061\u006c\u0065\u0072\u0074,然后进行unicode解码alert
http://www.xdnf.cn/news/15849.html

相关文章:

  • 在Ubutu22系统上面离线安装Go语言环境【教程】
  • 《P2680 [NOIP 2015 提高组] 运输计划》
  • RPG62.制作敌人攻击波数二:攻击ui
  • 不只是“能用”:从语义化到 ARIA,打造“信息无障碍”Web 应用的实战清单
  • 在vue中遇到Uncaught TypeError: Assignment to constant variable(常亮无法修改)
  • ubuntu24.04安装CUDA和VLLM
  • #SVA语法滴水穿石# (014)关于链式蕴含的陷阱
  • 学习C++、QT---30(QT库中如何自定义控件(自定义按钮)讲解)
  • Python桌面版数独(二版)-增加4X4、6X6
  • 元宇宙经济的四个要素
  • python 字典中取值
  • SpringBoot的配置文件
  • python的pywebview库结合Flask和waitress开发桌面应用程序简介
  • 反欺诈业务 Elasticsearch 分页与导出问题分析及解决方案
  • 基于单片机的智能家居安防系统设计
  • Linux文件系统三要素:块划分、分区管理与inode结构解析
  • Linux: rsync+inotify实时同步及rsync+sersync实时同步
  • Claude Code 逆向工程分析,探索最新Agent设计
  • 【机器学习深度学习】量化与选择小模型的区别:如何理解两者的优势与局限?
  • Day1||Vue指令学习
  • PyTorch的基础概念和复杂模型的基本使用
  • Facebook 开源多季节性时间序列数据预测工具:Prophet 快速入门 Quick Start
  • macOs上交叉编译ffmpeg及安装ffmpeg工具
  • 测试中的bug
  • 基于深度学习的自然语言处理:构建情感分析模型
  • urllib.parse.urlencode 的使用详解
  • AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年7月20日第144弹
  • Uniapp 纯前端台球计分器开发指南:能否上架微信小程序 打包成APP?
  • 安全信息与事件管理(SIEM)系统架构设计
  • 【前端】懒加载(组件/路由/图片等)+预加载 汇总