XXXXXXSS

URL編碼表

http://www.w3school.com.cn/tags/html_ref_urlencode.html

%22 "

%23 #

%27 '

%2f /

' '

  html 空格

" html "


javascript中的特殊字符如下:

\’ 單引號

" 雙引號

\& 和號

\\ 反斜槓

\n 換行符    url中對應%0a

\r 回車符

\t 製表符

\b 退格符

\f 換頁符

url中的特殊字符如下:

+ 表示空格(在 URL 中不能使用空格)        

/ 分隔目錄和子目錄                          /

? 分隔實際的 URL 和參數                      ?

% 指定特殊字符                               %

# 表示書籤                                  #

& URL 中指定的參數間的分隔符  


javascript特性

1.//代表註釋後面內容

2,\一個字符村沒有結束。可以另起一行

3.js中都可以unicode表示

4.javascript裏有一個特性。 如下:

aaa();

function aaa(){}

凡是以 function xxx(){} 形式定義的函數,都會被最優先解析。換句話說:

解析器在解析JS代碼段時,會先將 function xxx(){} 拿到最前面解析,然後再依次解析其它的部分。 換句話說,上面的代碼,實際的解析順序是:

function aaa(){

}

aaa();

利用這樣一個特性,我們的代碼可以改改。

location.href="........."+"&ss=aaaa\"+"&from==1;function from(){}//"+"&param=";


一、反射型XSS的查找思路:

過濾了雙引號

1. 如果輸入值在JS腳本中

   a.如果值在標籤的屬性中,要查看沒有過濾 &,# 等符號。

     在HTML屬性中,會自動對實體字符進行轉義,所以可以考慮將單引號' 寫成 &#x27。

     <img src="1" onerror="alert(1)">和<img src="1" onerror="alert&#x28;1&#x29;"> 是等效的

     因爲在url編碼中&-> %26, # -> %23

     所以最後在Url編碼中輸入,%26%23x27;%2balert(1)%2b%26%23x27  就等於 &#x27;+alert(1)+&#x2

     http://www.wooyun.org/bugs/wooyun-2010-015963


  b 如果輸入值不在JS腳本中

   a.如果值在標籤的屬性中,基本就繞不過了。


2. 存在寬字節

   a. 如果輸入值在JS腳本中

     1. 首先要看html採用了哪種字符集,如果是GB這種,一般就存在寬字節隱患。

      寬字節跨站,過濾了雙引號。基本思路就是搞個%c0%22或者%bf%27用款字節過濾下。

      正常寬字節是 %df%5c%27 但是%c0是可以吞掉一個%5c,也就是吞掉一個反斜槓\

      http://www.wooyun.org/bugs/wooyun-2010-015969


3. 沒有過濾換行符

    a. 如果輸入值在JS腳本中

     1 .在JS中,如果輸出值存在於註釋當中,/n可以進行換行,如果在URL中則寫成%0a

     http://www.wooyun.org/bugs/wooyun-2010-016003


4. 沒有過濾反斜線

    a. 如果輸入值在JS腳本中  嘗試"閉合

     1 .基本思路就是用\過濾到 \" 讓前一個字符結束"和後面一個字符的最開始”合併起來。如果過濾空格就/**/註釋掉試試。//註釋掉後面的內容

     http://www.wooyun.org/bugs/wooyun-2010-015979

     2. 如果輸出值在JS的註釋當中,則可以將\利用成一個字符竄沒有結束,另起一行。

        如果\被拆成了\\兩個,則用%c0吃掉一個。

        例如:var  a="我是一個字符串\

             我還是一個字符串";

http://www.wooyun.org/bugs/wooyun-2010-016008


二、DOM型XSS查找思路


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章