1. url编码 url字符只能是0x20--0x73之间的字符,但是有的字符对http协议或者url机制有特殊的意义,所以需要编码,这些特殊字符时:
% %25
= %3d
空格 %20
新行 %0a
空字节 %00
& %26
? %3f
; %3b
# %23
另外需要注意的一个字符时+,它表示空格
2. unicode编码
unicode编码以%u开头,后面跟该字符的16进制码点,如:
%u2215代表/
utf-8编码多字节字符以%为前缀,后面以16进制表示每个字节,如:
%c2%a9代表 ©
unicode编码主要用来绕过输入确认机制,当后台组件能够识别unicode编码的时候,通过各种标准与畸形的unicode编码,绕过过滤,达到攻击的目的
3.html编码
html页面中有些字符时元字符,例如“<”等,但是html的页面内容中,有可能存在"<"字符,因此这些字符需要编码,典型的几个如下:
" "
' &apos
& &
< <
> >
此外,任何字符都可以使用它的十进制ascii码进行编码,如:
"代表"
此外,任何字符都可以使用它的十六进制ascii码进行编码,如:
c代表"
html编码主要用于探查xss漏洞,如果应用程序返回的输入字符未被正确编码,那很可能存在xss漏洞
4. base64编码
base64编码是将字符串划分成各个3字节的块(24bit),然后每块划分成4部分(6bit, 64中组合),base64编码使用可打印的字符表示:
ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
如果字符串的最后部分不够3个字节,则用字符"="补齐,这个特点也可以作为识别base64编码的一条重要特征
例如,abcd的base64编码是:YWJjZA==