XSS-labs靶場(1-20)
開始通關!0x01 (直接漏洞注入)
反射型xss注入1、遇到?name=text,嘗試引數注入 注入陳述句: <script>alert(‘xss')</script>
0x02(閉合符號)
從url入手開始看,依然是get方式傳遞引數,應該還是反射型xss 閉合" "> 使用"> ….//
概念(知識點)補充: <script>alert(‘xss')</script> 其中<和>都被編碼成了html字符物體 1、猜測在服務器端用htmlspecialchars()函式對keyword引數的值進行了處理 2、但是問題是這里的js代碼在標簽屬性值中,瀏覽器是無法執行的 htmlspecialchars()編碼 “<” “>” <代表小于號(<) >代表大于符號(>) ≤表示小于或等于符號(<=) ≥表示大于或等于符號(>=)
思路:
- 既然上面的惡意代碼被編碼了,那么只能從屬性值中的惡意代碼處進行突破
- 要想瀏覽器執行這里的彈窗代碼,只需要 將屬性的引號和標簽先閉合 就可以
漏洞代碼:
"><script>alert('xss')</script>//
1、左邊的">去閉合原先的" 2、右邊的//去注釋原先的">0x03(使用不帶有<>的事件代碼,例如:onfocus、onmouseover)
首先使用<script>alert("xss")</script> 進行測驗
特殊事件:onfocus onfocus 事件在物件獲得焦點時發生, onfocus 通常用于 <input>、<select> 以及<a>最簡單的實體就是網頁上的一個輸入框, 當使用滑鼠點擊該輸入框時輸入框被選中可以輸入內容的時候就是該輸入框獲得焦點的時候,此時輸入框就會觸發onfocus事件. 因此點擊當前頁面的輸入框就可以完成彈框了,思路: 1、通過onfocus去繞過< >被編碼的情況 2、'onfocus=javascript:alert('xss') >
構造代碼:level3.php?keyword='onfocus=javascript:alert('xss') > //&submit=搜索
0x04(onfocus事件繞過)
首先使用<script>alert("xss")</script> 進行測驗
箭頭1處直接將<和>編碼轉換了 箭頭2處卻是把<和>洗掉了 但是,事件觸發卻不需要使用這兩個符號, 用上一關的代碼:level4.php?keyword="onmouseover="alert(/xss/)
0x05(<a>標簽繞過)
1、首先使用<script>alert("xss")</script> 進行測驗
2、使用”onfocus=javascript:alert(“xss”)”>
0x06(<a>標簽的大小寫繞過)
首先使用<script>alert("xss")</script> 進行測驗
0x07(雙寫關鍵字繞過)
1、首先使用<script>alert("xss")</script> =>中的<script>被過濾掉 2、使用onfocus=javascript:alert("xss”) =>中的onfocus被過濾成focus 3、使用"><a href=javascript:alert("xss")>xss</a>// =>中的href被過濾掉
嘗試雙寫關鍵字繞過
0x08(將ri編碼十六進制繞過)
首先嘗試<script>alert("xss")</script> =>script中的ri被替換過濾成r_i,所以嘗試編碼繞過
并且發現我們輸入的payload漏洞代碼,是被傳輸到友情鏈接的<a>標簽中 所以下一步測驗<a>標簽 *經過測驗,html物體編碼和hex編碼都可以繞過
漏洞代碼:javascript:alert(/xss/)
0x09(strpos()函式繞過)
首先使用之前關卡的漏洞代碼: <script>alert("xss")</script> javascript:alert(/xss/)
漏洞代碼:javascript:alert('http://')
0x0A(更改from標簽中input的type屬性)
首先使用之前關卡的漏洞代碼: <script>alert("xss")</script> javascript:alert(/xss/)
解題技巧是: 1、將input標簽的type型別的hidden改為text 2、將漏洞代碼填寫到value中
0x0B(前端代碼更改,加入onmouseover)
延續上一題解法:
0x0C(使用brup更改User_Agent)
延續上一題的解法
另一種解法: 查看引數t_ua傳的值,就可以判斷該引數就是傳遞User_Agent
使用brupsuite抓包傳遞漏洞代碼
0x0D(使用brup更改Cookie)
延續上一關技巧,直接更改前端代碼
第二種解法,通過brupsuite抓包重構資料包
0x0E(Exif隱寫)
0x0D(ng_lnclude呼叫外部URL)
查看原始碼后
ng_lnclude的用法: 1、ng-include 指令用于包含外部的 HTML檔案, 2、包含的內容將作為指定元素的子節點, 3、ng-include 屬性的值可以是一個運算式,回傳一個檔案名, 4、默認情況下,包含的檔案需要包含在同一個域名下, 值得注意的是: 1. ng-include,如果單純指定地址,必須要加引號 2. ng-include,加載外部html,script標簽中的內容不執行 3. ng-include,加載外部html中含有style標簽樣式可以識別ng_lnclude的作用就是加入一個外部的url鏈接地址
隨后去查看原始碼
漏洞代碼:?src='https://www.cnblogs.com/2020-11-17/archive/2021/10/26/level1.php?name=0x0E(空格決議繞過)
嘗試空格決議 <img src="" one rror=alert("xss")>onerror事件:當img圖片加載失敗會觸發的事件
0x0F(兩個引數自動拼接)
因為谷歌和火狐瀏覽器插件的原因,彈窗沒辦法正常彈出,推薦使用獵豹瀏覽器0x0G
與上關一致payload ?arg01="onmouse&arg02="alert(/xss/)
持續更新...end#
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/337507.html
標籤:其他
