当前位置:网站首页>XSS Payload 学习浏览器解码
XSS Payload 学习浏览器解码
2022-07-27 21:08:00 【xiaooxiangg】
目录
问题一:
<a href="%6a%61%76%61%73%63%72%69%70%74:%61%6c%65%72%74%28%31%29"></a>
无法弹窗
原因:urlcode无法识别协议(javascript: )
html解码顺序:1、html实体编码 2、urlcode编码 3, unicode编码
问题二:
<ahref="javascript:%61%6c%65%72%74%28%32%29">
可以弹窗
首先
先HTML实体编码解码,得到
<a href="javascript:%61%6c%65%72%74%28%32%29">
href中为URL,URL模块可识别为javascript协议,进行URL解码,得到
<a href="javascript:alert(2)">
由于是javascript协议,解码完给JS模块处理,于是被执行
问题三:
<a href="javascript%3aalert(3)"></a>
不能弹窗
依然是编码了协议 (javascript:)冒号也属于协议中一部分,导致了url模块不认识这个协议,所以不能弹窗。
问题四:
<div><img src=x οnerrοr=alert(4)></div>
不能弹窗
HTML解析器作为一个状态机 在解析过程中,任何时候它只要遇到一个'<'符号(后面没有跟'/'符号)就会进入“标签开始状态(Tag open state)”。然后转变到“标签名状态(Tag name state)”,“前属性名状态(before attribute name state)”......最后进入“数据状态(Data state)”并释放当前标签的token。当解析器处于“数据状态(Data state)”时,它会继续解析,每当发现一个完整的标签,就会释放出一个token。
当解析器解析完“<div>”并处于“数据状态”时,“<”和“>”字符 将会被解析,当解析器遇到“&”字符,它会知道这是“数据状态的字符引用”,但是不会被执行。因为解析器在解析这个字符引用后不会转换到“标签开始状态”。只能原样输出。
问题五:
<textarea><script>alert(5)</script></textarea>
不能弹窗
RCDATA的概念 在HTML中有五类元素:
空元素(Void elements),如<area>, ,<base>等等
原始文本元素(Raw text elements),有<script>和<style>
RCDATA元素(RCDATA elements),有<textarea>和<title>
外部元素(Foreign elements),例如MathML命名空间或者SVG命名空间的元素
基本元素(Normal elements),即除了以上4种元素以外的元素
五类元素的区别如下:
空元素,不能容纳任何内容(因为它们没有闭合标签,没有内容能够放在开始标签和闭合标签中间)。
原始文本元素,可以容纳文本。
RCDATA元素,可以容纳文本和字符引用。
外部元素,可以容纳文本、字符引用、CDATA段、其他元素和注释
基本元素,可以容纳文本、字符引用、其他元素和注释
这是一种可以容纳字符引用的情况“RCDATA状态中的字符引用”。这意味着在<textarea>和<title>标签中的字符引用会被HTML解析器解码。这里要再提醒一次,在解析这些字符引用的过程中不会进入“标签开始状态”。这样就可以解释问题5了。和问题四的原因一样,<解析<出来后不能进入“标签开始状态”
问题六:
<textarea><script>alert(6)</script></textarea>
不能弹窗
<textarea><title>下写任何标签都是不能执行的
问题七:
<button οnclick="confirm('7');">Button</button>
可以弹窗
'html实体编码被解码成 '
问题八:
<button οnclick="confirm('8\u0027);">Button</button>
不能弹窗
js中unicode编码出符号,但是不能识别符号()" ' + - 。
问题九:
<script>alert(9);</script>
不能弹窗
原始文本元素(Raw text elements),有<script>和<style> 只能容纳文本 原样输出
问题十:
<script>\u0061\u006c\u0065\u0072\u0074(10);</script>
可以弹窗
js中unicode编码出字符,JS中能够识别字符
问题十一:
<script>\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0031\u0029</script>
不能弹窗
和问题八一样不能识别符号
问题十二:
<script>\u0061\u006c\u0065\u0072\u0074(\u0031\u0032)</script>
不能弹窗
\u0031\u0032在解码的时候会被unicode解码为字符串12,注意是字符串,不是数字,文字显然是需要引号的
问题十三:
<script>alert('13\u0027)</script>
不能弹窗
和问题八一样
问题十四:
<script>alert('14\u000a')</script>
可以弹窗
\u000a在JavaScript里是换行,就是\n,直接执行
问题十五:
<a href="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)"></a>
可以弹窗
先HTML实体编码解码,得到
<a href="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)"></a>
javascript:协议出来后 urlcode 才能识别,在href中由URL模块处理,解码得到
javascript:\u0061\u006c\u0065\u0072\u0074(15)
然后由JS模块处理,解码得到
javascript:alert(15)
边栏推荐
- Socket interaction process of four waves
- 基于mediapipe的姿态识别和简单行为识别
- MySQL data query (where)
- Latex中如何加粗字体 & 如何打出圆圈序号
- Interviewer: let's talk about the specific process of network data transmission
- MapReduce (III)
- The first activity of togaf10 standard reading club was successfully held, and the wonderful moments were reviewed!
- UE4官方AEC蓝图案例课程学习笔记
- RPA流程自动化机器人是什么技术?如何实现办公自动化?
- Arm32 for remote debugging
猜你喜欢

Bank Marketing预测一个客户购买理财产品的成功率

proteus仿真arduino中调用DHT11/22温湿度传感器

Latex常用总结(2):输入矩阵(输入矩阵、对角阵、方程组等)

给网站套上Cloudflare(以腾讯云为例)

JUC工具包学习

如果我们是那晚负责修复 B 站崩了的开发人员

主数据管理理论与实践

解密 OOM 崩溃下降 90% 的秘密~
![[December Haikou] the 6th International Conference on ships, marine and Maritime Engineering in 2022 (naome 2022)](/img/a4/041268aadd5d8ff493b52ead9c5e79.png)
[December Haikou] the 6th International Conference on ships, marine and Maritime Engineering in 2022 (naome 2022)

2022 International Conference on civil, building and Environmental Engineering (iccaee 2022)
随机推荐
TFRecord的Shuffle、划分和读取
J9数字科普:Sui网络的双共识是如何工作的?
并发和并行有什么区别?
Can Siemens PLC collect analog data of multiple slave stations in real time and wirelessly?
加速IGBT国产化!比亚迪半导体将独立上市,市值或达300亿元!
【12月海口】2022年第六届船舶,海洋与海事工程国际会议(NAOME 2022)
进程同步的方式有哪些?
BUUCTF-bbbbbbrsa
基于原生js实现今日新闻网站
JUC工具包学习
三次握手的Socket交互流程
Binary conversion method
MySQL data query (where)
29.学习Highcharts 使用百分比的堆叠柱形图
面试官问线程安全的List,看完再也不怕了!
Comparison between virtual memory and cache
Redis的分布式锁
字符流学习14.3
js数组复制速度测试220320
15million per day! BYD masks won a US $1billion order in California