文章目錄
- 前言
- 一、靶場6-10關
- 1、關卡6
- 2、關卡7
- 3、關卡8
- 4、關卡9
- 5、關卡10
- 總結
前言
此文章只用于學習和反思鞏固xss攻擊知識,禁止用于做非法攻擊。注意靶場是可以練習的平臺,不能隨意去尚未授權的網站做滲透測試!!!
一、靶場6-10關
1、關卡6
發現url、搜索框有可控參數keyword。輸入’“<>看看有沒有被過濾,看前端代碼發現input標簽的value值沒有過濾’”<>,h2標簽內容被實體化了。也測試了script、關于on的onclick、onerror等,也是被過濾了。再試一試上一關的a標簽發現href也被過濾了。
但是我們試一試大小寫居然繞過了,這一關原來是沒有大小寫過濾。也就是說前面幾關的方法這里用大寫就能繞過,這里我隨便用了一個。
攻擊語句為
"><sCript>alert(1)</sCript>
看源代碼也是發現和我們所猜測的一樣,看到str_replace函數把敏感xss語句替換為正常字符串。
2、關卡7
這里我們有經驗了,直接提交"'<><script>onhref
,看看有沒有過濾。發現input標簽value值script、on、href不見了,我們初步猜測是把敏感xss攻擊語句替換為空了。但是我們學過文件上傳漏洞就知道有雙寫后綴名繞過。因為后臺管理員只過濾一次敏感語句,我們雙寫就能繞過。這里我們攻擊語句為
"><scscriptript>alert(1)</scscriptript>
我們看源代碼發現和我們猜測的一樣,敏感語句被替換為空了。為什么上一關不能雙寫繞過呢,仔細發現上一關其實是把敏感語句替換為其他字符串了,這一關是替換為空。這就是6、7關不同的地方。而且第7關有大小寫過濾。
3、關卡8
第八關我們看源代碼來做,因為想不到方法。發現源代碼是全面過濾了keyword參數之前的方法都無效了,但是發現這一關不同的地方是有一個友情鏈接,我們得從這里入手。
看源代碼發現還有一個可控參數就是友情鏈接的值,a標簽的href我們是可以控制的。但是這個參數是被完全過濾了,這個時候我們得利用href隱藏屬性自動unicode解碼的功能進行繞過。因為編碼的xss語句可以繞過這些重重過濾。但是這里我們不能利用之前的攻擊語句進行編碼,例如"><sCript>alert(1)</sCript>
因為這樣就是把href閉合掉了,而且利用不到href自動解碼功能了。
攻擊語句為
javascript:alert()
編碼得javascript:alert()
4、關卡9
又是友情鏈接,這里我們看源代碼,發現過濾手段和上一關差不多,該過濾的都過濾了。這里顯而易見突破點還是友情鏈接這里。
但是仔細觀察源代碼發現與上一關不同的是這一關對友情鏈接有一個邏輯判斷,意思是如果你輸入的鏈接沒有http://開頭的話,它就會執行if語句輸出你的鏈接不合法,所以這一關就是加上http://就行了
攻擊語句為
javascript:alert()/*http://*/
這里攻擊語句我們要把http://用/**/注釋掉,不然就會當作地址了不會執行js腳本。
5、關卡10
發現源代碼中keyword參數是被過濾的,但是發現隱藏的參數t_sort可以進行傳參。而且這個參數只過濾了尖括號,這里我們利用onclick。而且后面加上type=test,因為默認是隱藏的輸入框,這里我們要構造輸入框才能觸發onclick事件。最后一個雙引號是閉合type的。<input name="t_sort" value=""onclick="alert()" type="test" type="hidden">
攻擊語句為
"οnclick="alert()" type="test
總結
此文章是小白自己為了鞏固xss攻擊而寫的,大佬路過請多指教!