LEVEL1
觀察發現,向伺服器傳入一個參數name,頁面會回顯出參數name的值和參數長度
檢視源代碼
可以看到,值test被插入到<h2></h2>标簽之間,猜測為反射型XSS
在<script>裡,可以發現,調用alert時,我們就可以運作function()函數
由于不知道伺服器端對于送出的敏感字元有沒有過濾,是以這裡直接在name參數中指派一個簡單的彈窗來進行測試,采用标簽注入,注入js代碼
name=<script>alert('xss')</script>
檢視源代碼,可以看到伺服器傳回了送出的payload
<script>alert('')</script>:XSS測試語句,彈出alert裡面的字元串内容
LEVEL2
通過搜尋框輸入,傳入值為test的參數keyword,參數的值直接回顯在頁面
分析代碼
在搜尋框内輸入<script>alert('xss')</script>
發現頁面直接回顯出輸入的js語句
可以看到在<h2></h2>标簽中代碼被編碼了,但是插入到value參數值中的代碼并沒有。
js代碼在标簽屬性值中,浏覽器無法執行。要執行這裡的代碼,可以先閉合input标簽,然後注入代碼。
構造<script>alert('xss')</script>
"><script>alert('xss')</script>
LEVEL3
在搜尋框内輸入test進行測試
發現頁面兩處地方回顯了值test
發現這兩處的代碼都被編碼了
考慮采用<input>标簽的特殊事件來執行js代碼
因為标簽帶有”<"的,是以采用事件,需要閉合标簽的屬性
' onclick='alert(1)
知識點
LEVEL4
有兩處回顯
輸入<script>alert('xss')</script>測試
1處對代碼進行了編碼,2處删除了<和>這兩個符号
采用事件注入代碼
" onclick="alert(1)"
LEVEL5
輸入<script>alert('xss')</script>
第二處代碼,在r和i之間插入了_符号
采用事件注入,同樣插入了_
"><a href="javascript:alert(1)"