level1
打開檢查,發現test直接放入h2標簽中
此時通過script繞過h2標簽
構造payload
127.0.0.1/xss-labs/lvel1.php?name=<script>alert(111)</script>
直接使用script標簽繞過h2,并執行alert,通過
level2
打開檢查,輸入的123被放在input標簽里面的value值
輸入script函數
此時并未閉合則加入單引號進行測試
構造payload
127.0.0.1/xss-labs/lvel1.php?name='><script>alert(111)</script>
通過
level3
打開檢查,參數位置與2一樣
輸入2的代碼
發現參數均為value值,閉合操作失效
單引號閉合
測試仍然失效
其中<>被替換,則此時不適用標簽,則使用onfocus事件進行觸發
此時依舊失效,即后面仍未閉合成功,則添加空格隔開,再次測試
觀察代碼,此時閉合成功,onfocus可以正常觸發,點擊輸入框,通過
level4
此時與前面關卡的頁面相同,則使用3的代碼進行測試
發現代碼并未閉合成功,此時將單引號變為雙引號再次測試
通過
level5
首先用script與obfocus進行測試
發現onfocus與script均被替換,此時考慮使用a標簽href鏈接的應用,通過跳轉到另一個頁面繞過網頁
構造payload運行,此時href并未被替換
點擊鏈接,通過
level6
使用前面的代碼進行測試
發現其中關鍵字符后面添加了下劃線,由此可判斷是從字符進行判別,將小寫字母改為大寫字母進繞過測試(此處以a標簽為例演示)
替換后發現標簽生效,即該關卡只是通過小寫字母進行判別修改
點擊鏈接,通過
level7
以script進行測試
發現所有script均被替換成空值,即是通過判別整體的script完成替換的操作
同時通過測試發現字符被鎖定成小寫
此時考慮script嵌套,來繞過script的整體替換
成功繞過script的整體替換,完善代碼并運行,通過
level 8
觀察頁面,輸入框的內容是直接添加在href里面,首先先使用第五關運行href的內容進行測試
運行失敗
此時查看源代碼
發現鏈接的內容是經過一系列的關鍵字替換以及htmlspecialchars函數實體化再放進href里面
此時使用編碼的形式來繞過實體化和替換
javascript:alert(111)轉義后的字符
&#34;&#62;&#60;&#97;&#43;&#104;&#114;&#101;&#102;&#61;&#34;&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#49;&#49;&#41;&#34;&#62;&#21451;&#24773;&#38142;&#25509;&#60;&#47;&#97;&#32;&#62;
將轉義的字符輸入框內進行測試
運行成功