xss-labs(16-20)
level-16 過濾空格,script,/
嘗試和分析
?keyword=<script>alert(1)</script>
把script
過濾了?
雙寫?keyword=<scrscriptipt>alert(1)</scscriptript>
第一個<sc ript>
為什麼不顯示呢?
看看前端頁面原始碼: 
表示一個空格
輸入<>script1 2/34
:變成了<> 1 2 34
,由此可看出script
,空格
,/
均變成了 
<script>alert(1)&</script>
接下來要繞過,不能使用script,空格和 /
替換空格
空格可以用%20 %09 %0a %0b %0c %0d %a0 %00
測試看看哪些可以正確顯示空格keyword=
1%20
2%09
3%0a
4%0b
5%0c
6%0d
7%a0
8%00
9
由此可看出:
-
%20
和%09
表示空格,但是會被替換為 
-
%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>
標籤
火狐不支援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
太痛苦了,目前還沒有頭緒,等學精了再看