1. 程式人生 > 其它 >xss-labs(16-20)

xss-labs(16-20)

level-16 過濾空格,script,/

嘗試和分析

?keyword=<script>alert(1)</script>script過濾了?

雙寫?keyword=<scrscriptipt>alert(1)</scscriptript>

第一個<sc ript>為什麼不顯示呢?

看看前端頁面原始碼:&nbsp表示一個空格

輸入<>script1 2/34:變成了<>&nbsp;1&nbsp;2&nbsp;34,由此可看出script,空格,/均變成了&nbsp

<script>alert(1)&</script>

,&後面的內容不顯示了,猜測&會使後面的內容過濾

接下來要繞過,不能使用script,空格和 /

替換空格

空格可以用%20 %09 %0a %0b %0c %0d %a0 %00

測試看看哪些可以正確顯示空格keyword=1%202%093%0a4%0b5%0c6%0d7%a08%009

由此可看出:

  • %20%09表示空格,但是會被替換為&nbsp

  • %0a%0d為空格,且不會替換

  • %0b,%0c,%00沒空格

  • %a0表示特殊字元

因此可以用%0a%0d代表空格

構造語句

不能用script,可以用<img src>引入一個錯誤資源,然後用onerror=alert()觸發(onerror

當發生錯誤時觸發事件)

?keyword=<img%0dsrc=1%0donerror=alert(1)>

分析原始碼

替換空格,script,/,再次替換空格

level-17 embed標籤

嘗試

位址列的啊a和b是否和前端原始碼的a=b有關聯呢?

?arg01="><script>&arg02=alert(1)</script>,傳遞到了<embed>但是被轉義了

先了解一下<embed>標籤

HTML embed標籤使用方法和屬性詳解

火狐不支援flash?反正沒反應,在edge上十試試,?arg01=a%0aonmouseover&arg02=alert(1)

,觸發彈窗

分析原始碼

將傳入的值拼接到embed標籤中

level-18 embed標籤(同17)

嘗試

?arg01=%0Aonmouseover&arg02=alert(1),和上一題沒什麼區別

分析原始碼

和17沒有區別

level-19 反編譯SWF檔案

這一題著實有點難度

sIFR技術實現原理

基於Flash允許將字型嵌入SWF檔案,所以事先將字型載入並生成Flash的SWF檔案。然後通過JS控制進行頁面文字的二次渲染。實現的方法是載入JS檔案,通過JavaScript對Web頁面進行搜尋,找到設定元素或者設定類名的元素中的所有文字。然後JavaScript將文字重新渲染並在最終瀏覽頁面上輸出成為一個小的Flash檔案。

簡單講,就是利用sIFR 技術可以將JavaScript程式碼寫到swf檔案裡面執行

程式碼分析

使用JPEXS來分析flash的原始碼:

首先確定Action Scrip語言的版本為Action Script 2.0。

在sIFR中搜索Movie (436) is incompatible with

對比可知%s就是頁面的undefined

太痛苦了,目前還沒有頭緒,等學精了再看

level-20(暫無)