瀏覽器的自解碼機制(用於XSS編碼繞過)

2021-10-03 10:34:50 字數 1221 閱讀 3292

(1)瀏覽器解析html

(2)標籤轉化為dom節點,識別標籤時,html解析器無法識別被實體編碼的內容,在建立起dom樹,才能對每個節點的內容進行識別

(3)js dom api(js解析器)參與,對dom樹進行修改,改變其內容。此時css解析器解析外部css及style標籤,一起構成rendering tree==

(4)這裡css在構造rendering tree之前,會有css rule tree

(5)布局完之後,使用ui後端完成每個節點的繪製,從而顯示

在上述有兩個解析器需要特別注意,分別是html解析器、js解析器、cs解析器(這個暫時不提)。因為基本上xss編譯碼payload就是靠這兩個來利用的。

作用:構造dom樹,對節點內容進行解析

作用:在處理script,style標籤,解析器會自動切換為js解析模式,而src,href後面加的js偽協議也會進入js解析模式。進入該模式時,dom已經建立起來了

1.使用實體編碼繞過,例子如下:

注意:實體編碼不能對標籤字段進行,例如:標籤表示式: 《標籤名 控制字元 屬性名="資料值" 事件名="事件值">

此時只能對資料值事件值進行實體編碼才能彈窗。

此時,有相同作用的編碼格式有:

(1)html實體編碼:a

(2)十六進製制:a

(3)十進位制:a

(4)支援數字部分高位補充0,a(a)

2.js解析

開啟頁面後能夠正常彈窗,說明進行了unicode解碼.【同樣只能對字元資料進行編碼,不能對alert()中的()進行編碼】

不管是html解析還是js解析,都是對其字元部分進行操作,例如對於

1)雙引號「  」裡面的內容屬於html標籤的字元部分【所以:

2)onerror事件同時也由js處理,【所以:

3)html和js同時處理:【

3.1 第一步:html實體解碼:

\u0061\u006c\u0065\u0072\u0074 解碼為==》 \u0061\u006c\u0065\u0072\u0074

3.2 第二部:js解碼:

\u0061\u006c\u0065\u0072\u0074 解碼為==》alert

瀏覽器的渲染機制

節選自 1 dom document object model,瀏覽器將html解析成樹形的資料結構,簡稱dom。2 cssom css object model,瀏覽器將css 解析成樹形的資料結構。3 dom 和 cssom 都是以bytes characters tokens nodes ob...

瀏覽器的快取機制

瀏覽器的快取是乙個比較複雜但是比較重要的機制,在我們瀏覽乙個頁面時發現有異常情況,通常考慮的就是 瀏覽器是否做了快取。當瀏覽器做了快取,而我們需要請求最新的頁面內容的時候,通常的做法是按ctrl f5組合鍵重新請求一次這個頁面。ctrl f5組合鍵重新整理頁面,瀏覽器會直接向目標url傳送請求,而不...

瀏覽器的渲染機制

google web fundamentals 是乙個非常優秀的文件,裡面講到了跟web 瀏覽器 前端的方方面面。我總結一下其中的 ilya grigorik 寫的 critical rendering path 瀏覽器渲染機制部分的內容如下 1 dom document object model,...