XSS反射性

目录

[1.URL 编码 "javascript:alert(1)"](#1.URL 编码 "javascript:alert(1)")

[2.HTML字符实体编码 &#;"javascript" 和 URL 编码 "alert(2)"](#;"javascript" 和 URL 编码 "alert(2)")

[3.URL 编码 ":" 就是%3a](#3.URL 编码 ":" 就是%3a)

[4.HTML字符实体编码 < 和 >](#4.HTML字符实体编码 < 和 >)

[5.HTML字符实体编码 < 和 >](#5.HTML字符实体编码 < 和 >)

6.<script>alert(6)</script>

[7. HTML字符实体编码 " ' " (单引号)](#7. HTML字符实体编码 " ' " (单引号))

[8.Unicode编码 " ' " (单引号)](#8.Unicode编码 " ' " (单引号))

[9.HTML字符实体编码 alert(9);](#9.HTML字符实体编码 alert(9);)

补充:在HTML中有五类元素:

五类元素的区别如下:

[10.Unicode 编码 alert](#10.Unicode 编码 alert)

[​编辑11.Unicode 编码 alert(11)](#编辑11.Unicode 编码 alert(11))

[12.Unicode 编码 alert(12)](#12.Unicode 编码 alert(12))

[13.Unicode 编码 " ' " (单引号)](#13.Unicode 编码 " ' " (单引号))

[​编辑14.Unicode 编码换行符(0x0A)](#编辑14.Unicode 编码换行符(0x0A))

15.实体编码,先解码


1.URL 编码 "javascript:alert(1)"

<a href="%6a%61%76%61%73%63%72%69%70%74:%61%6c%65%72%74%28%31%29">aaa</a>

a标签可以触发JS代码

a标签里面的百分号加16进制像是一个urlcode的编码,这个编码放在href里面就是一个超链接,那我们就可以给他一个网址让它呈现出来

<a href="https://www.baidu.com">aaaa</a>,

但是它是执行不了的,因为他不认识Javascript编码协议,所以不执行

2.HTML字符实体编码 &#;"javascript" 和 URL 编码 "alert(2)"

<a href="&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:%61%6c%65%72%74%28%32%29">

HTML编码解析在前,然后再去解析URLcode编码这样就人事Javascript所以可以执行;而第一个不认识JS这个协议所以就不会执行成功

3.URL 编码 ":" 就是%3a

<a href="javascript%3aalert(3)"></a>

在href里面有一位编码都不可以所以不执行,除非先解码

4.HTML字符实体编码 < 和 >

<div>&#60;img src=x οnerrοr=alert(4)&#62;</div>

<img src="1" οnerrοr="alert(1)">

当我们进入数据状态中的字符引用时,的确可以将编码进行解码,但不会进去标签开始状态

HML看到只要有字符引用,这里是&就把他当作是一个普通的字符串,它可以显示但不执行

div标签没有执行可以看到

5.HTML字符实体编码 < 和 >

<textarea>&#60;script&#62;alert(5)&#60;/script&#62;</textarea>

虽然进行了解码但是还是执行不成功

在HTML解析器下只要遇到<textarea>和<title>就会把它里面的所有内容都认为是普通文本,所以不成功

6.<textarea><script>alert(6)</script></textarea>

这个没有编码还是执行不了为什么?

<script>内容被认为是一个普通的字符串所以不执行

7. HTML字符实体编码 " ' " (单引号)

<button οnclick="confirm('7&#39;);">Button</button>

执行成功了

8.Unicode编码 " ' " (单引号)

<button οnclick="confirm('8\u0027);">Button</button>

JS中严格区分大小写,不能编码符号,这里的8都编码了符合所以不执行

实际看来这个是执行不了的

9.HTML字符实体编码 alert(9);

<script>&#97;&#108;&#101;&#114;&#116&#40;&#57;&#41;&#59;</script>

<script>是原始文本元素,可以容纳文本,所以它把里面内容当成一个文本没有进行实体解码,但是JS有不认识这个&符合,所以执行不了

补充:在HTML中有五类元素:

  1. 空元素(Void elements),如<area>, ,<base>等等

  2. 原始文本元素(Raw text elements),有<script>和<style>

  3. RCDATA元素(RCDATA elements),有<textarea>和<title>

    4.外部元素(Foreign elements),例如MathML命名空间或者SVG命名空间的元素

    5.基本元素(Normal elements),即除了以上4种元素以外的元素

五类元素的区别如下:

  1. 空元素,不能容纳任何内容(因为它们没有闭合标签,没有内容能够放在开始标签和闭合标签中间)。

  2. 原始文本元素,可以容纳文本。

  3. RCDATA元素,可以容纳文本和字符引用。

  4. 外部元素,可以容纳文本、字符引用、CDATA段、其他元素和注释

  5. 基本元素,可以容纳文本、字符引用、其他元素和注释

10.Unicode 编码 alert

<script>\u0061\u006c\u0065\u0072\u0074(10);</script>

没有编码符合支持unicode所以成功

11.Unicode 编码 alert(11)

<script>\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0031\u0029</script>

用来编码符合,编码了括号所以不执行

12.Unicode 编码 alert(12)

<script>\u0061\u006c\u0065\u0072\u0074(\u0031\u0032)</script>

没有用编码符合他把12重新解码后,JS认为他是一个字符串,但是有没有' '单引号共和" "双引号的包裹,JS就认为是语法错误

13.Unicode 编码 " ' " (单引号)

<script>alert('13\u0027)</script>

用了编码符合)不执行

14.Unicode 编码换行符(0x0A)

<script>alert('14\u000a')</script>

HTML支持换行,所以执行

15.实体编码,先解码

<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;">15</a>

先是实体编码解码,再是urlcode解码,最后是unicode解码成alert(15),所以他可以执行成功

相关推荐
Senar8 分钟前
Web端选择本地文件的几种方式
前端·javascript·html
欧先生^_^9 分钟前
OSPF网络协议
网络·网络协议·智能路由器
iuyou️9 分钟前
Spring Boot知识点详解
java·spring boot·后端
北辰浮光11 分钟前
[Mybatis-plus]
java·开发语言·mybatis
一弓虽21 分钟前
SpringBoot 学习
java·spring boot·后端·学习
南客先生25 分钟前
互联网大厂Java面试:RocketMQ、RabbitMQ与Kafka的深度解析
java·面试·kafka·rabbitmq·rocketmq·消息中间件
烛阴25 分钟前
UV Coordinates & Uniforms -- OpenGL UV坐标和Uniform变量
前端·webgl
ai大佬28 分钟前
Java 开发玩转 MCP:从 Claude 自动化到 Spring AI Alibaba 生态整合
java·spring·自动化·api中转·apikey
姑苏洛言30 分钟前
扫码小程序实现仓库进销存管理中遇到的问题 setStorageSync 存储大小限制错误解决方案
前端·后端
烛阴40 分钟前
JavaScript 的 8 大“阴间陷阱”,你绝对踩过!99% 程序员崩溃瞬间
前端·javascript·面试