网安第一次作业

目录

url编码

Unicode编码

ASCII码 

ASCII码表

浏览器解析各编码

基础部分

高级部分


url编码

当 URL 路径或者查询参数中,带有中文或者特殊字符的时候,就需要对 URL 进行编码(采用十六进制编码格式)。URL 编码的原则是使用安全字符去表示那些不安全的字符。

安全字符,指的是没有特殊用途或者特殊意义的字符。


URL 是“统一资源定位符”(Uniform Resource Locator)的首字母缩写,中文译为“网址”,表示各种资源的互联网地址。下面就是一个典型的 URL。

组成部分:协议、主机、端口、路径、查询参数、锚点等。

示例如下

http://www.ccc.net/index?param=10


路径和查询字符串之间使用问号?隔开。上述示例的域名为 www.ccc.net,路径为 index,查询字符串为 param=1。

URL 中规定了一些具有特殊意义的字符,常被用来分隔两个不同的 URL 组件,这些字符被称为保留字符。例如:

冒号:用于分隔协议和主机组件,斜杠用于分隔主机和路径

?:用于分隔路径和查询参数等。

=用于表示查询参数中的键值对。

&符号用于分隔查询多个键值对。

其余常用的保留字符有:/ . … # @ $ + ; %


URL 字符转义的方法是,在这些字符的十六进制 ASCII 码前面加上百分号(%)。下面是这18个字符及其转义形式。

!:%21

#:%23

$:%24

&:%26

':%27

(:%28

):%29

*:%2A

+:%2B

,:%2C

/:%2F

::%3A

;:%3B

=:%3D

?:%3F

@:%40

[:%5B

]:%5D


Unicode编码


Unicode 是容纳世界所有文字符号的国际标准编码,使用四个字节为每个字符编码。

UTF 是英文 Unicode Transformation Format 的缩写,意为把 Unicode 字符转换为某种格式。UTF 系列编码方案(UTF-8、UTF-16、UTF-32)均是由 Unicode 编码方案衍变而来,以适应不同的数据存储或传递,它们都可以完全表示 Unicode 标准中的所有字符。目前,这些衍变方案中 UTF-8 被广泛使用,而 UTF-16 和 UTF-32 则很少被使用。

UTF-8 使用一至四个字节为每个字符编码,其中大部分汉字采用三个字节编码,少量不常用汉字采用四个字节编码。因为 UTF-8 是可变长度的编码方式,相对于 Unicode 编码可以减少存储占用的空间,所以被广泛使用。

UTF-16 使用二或四个字节为每个字符编码,其中大部分汉字采用两个字节编码,少量不常用汉字采用四个字节编码。UTF-16 编码有大尾序和小尾序之别,即 UTF-16BE 和 UTF-16LE,在编码前会放置一个 U+FEFF 或 U+FFFE(UTF-16BE 以 FEFF 代表,UTF-16LE 以 FFFE 代表),其中 U+FEFF 字符在 Unicode 中代表的意义是 ZERO WIDTH NO-BREAK SPACE,顾名思义,它是个没有宽度也没有断字的空白。

ASCII码 


标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符 。

其中:

0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为8、9、10 和13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响  。

32~126(共95个)是字符(32是空格),

其中:

48~57为0到9十个阿拉伯数字。

65~90为26个大写英文字母,

97~122为26个小写英文字母,

其余为一些标点符号、运算符号等。

ASCII码表

浏览器解析各编码

基础部分

1.<a href="%6a%61%76%61%73%63%72%69%70%74:%61%6c%65%72%74%28%31%29">aaa</a> //无法显示,因为协议不能被urlcode解析
URL 编码 "javascript:alert(1)"
2.<a href="&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:%61%6c%65%72%74%28%32%29">
HTML字符实体编码 "javascript" 和 URL 编码 "alert(2)"
3.<a href="javascript%3aalert(3)"></a> // :也属于协议的一部分,不能使用urlcode编码
URL 编码 ":"
4.<div>&#60;img src=x onerror=alert(4)&#62;</div>  //html检测到<,进入标签开始状态,将&#60(<)识别为文本,不解析
HTML字符实体编码 < 和 >
5.<textarea>&#60;script&#62;alert(5)&#60;/script&#62;</textarea> //textareae和title 只显示文本和字符引用
HTML字符实体编码 < 和 >
6.<textarea><script>alert(6)</script></textarea>

高级部分

7.<button onclick="confirm('7&#39;);">Button</button> //解析顺序 html -----> urlcode ------> javascript ,javascript 不解析字符和数字
HTML字符实体编码 " ' " (单引号)
8.<button onclick="confirm('8\u0027);">Button</button> //\uxxxx是靠javascript解析的,但是javascript不解析字符,所以该代码无法弹窗
Unicode编码 " ' " (单引号)
9.<script>&#97;&#108;&#101;&#114;&#116&#40;&#57;&#41;&#59</script> //script标签脱离了html框架,他靠javascript解析代码,所以该代码无弹窗
HTML字符实体编码 alert(9);
10.<script>\u0061\u006c\u0065\u0072\u0074(10);</script>
Unicode 编码 alert
11.<script>\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0031\u0029</script> //该代码将括号和数字编码,但是javascript不解析
Unicode 编码 alert(11)
12.<script>\u0061\u006c\u0065\u0072\u0074(\u0031\u0032)</script>//不解析数字
Unicode 编码 alert 和 12
13.<script>alert('13\u0027)</script> //不解析字符
Unicode 编码 " ' " (单引号)
14.<script>alert('14\u000a')</script> //\u000a==\n,不影响结果,某些特殊情况下可用于逃逸
Unicode 编码换行符(0x0A)怄气9889999
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;"></a>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值