『XSS_Labs靶場通關』


XSS-labs靶場(1-20)

開始通關!

20211104191331

0x01(直接漏洞注入)

反射型xss注入

1、遇到?name=text,嘗試參數注入
注入語句:
<script>alert(‘xss')</script>

20211104191750


0x02(閉合符號)

從url入手開始看,依然是get方式傳遞參數,應該還是反射型xss
閉合" "> 使用"> ….//

20211104191931

符號閉合位置

20211104191952

概念(知識點)補充:
<script>alert(‘xss')</script>
其中<和>都被編碼成了html字符實體
1、猜測在服務器端用htmlspecialchars()函數對keyword參數的值進行了處理
2、但是問題是這里的js代碼在標簽屬性值中,瀏覽器是無法執行的
 
htmlspecialchars()編碼 “<” “>”
&lt;代表小於號(<)
&gt;代表大於符號(>)
&le;表示小於或等於符號(<=)
&ge;表示大於或等於符號(>=)

思路:

  1. 既然上面的惡意代碼被編碼了,那么只能從屬性值中的惡意代碼處進行突破.
  2. 要想瀏覽器執行這里的彈窗代碼,只需要將屬性的引號標簽先閉合就可以

漏洞代碼:

"><script>alert('xss')</script>//

1、左邊的">去閉合原先的"
2、右邊的//去注釋原先的">

20211104192416

查看源碼驗證:

20211104192512


0x03(使用不帶有<>的事件代碼,例如:onfocus、onmouseover)

首先使用<script>alert("xss")</script> 進行測試

20211104192630

這里可以通過<input>標簽的一些特殊事件來執行js代碼

特殊事件:onfocus
onfocus 事件在對象獲得焦點時發生。
onfocus 通常用於 <input>、<select> 以及<a>最簡單的實例就是網頁上的一個輸入框。
當使用鼠標點擊該輸入框時輸入框被選中可以輸入內容的時候就是該輸入框獲得焦點的時候,此時輸入框就會觸發onfocus事件.
因此點擊當前頁面的輸入框就可以完成彈框了。

思路:

  1. 通過onfocus去繞過< >尖括號被編碼的情況
  2. 'onfocus=javascript:alert('xss') >

構造代碼:

level3.php?keyword='onfocus=javascript:alert('xss') > //&submit=搜索

20211104192954


0x04(onfocus事件繞過)

首先使用<script>alert("xss")</script> 進行測試

20211104193302

箭頭1處直接將<和>編碼轉換了
箭頭2處卻是把<和>刪除了
但是,事件觸發卻不需要使用這兩個符號。
用上一關的代碼:level4.php?keyword="onmouseover="alert(/xss/)

20211104193356


0x05(<a>標簽繞過)

1、首先使用<script>alert("xss")</script> 進行測試

20211104193519

2、使用”onfocus=javascript:alert(“xss”)”>

20211104193627

觀察:
1、<script>標簽會被替換成<scr_ipt>
2、onfocus事件會被替換成on_focus

20211104193730

20211104193749


0x06(<a>標簽的大小寫繞過)

首先使用<script>alert("xss")</script> 進行測試

20211104194038

觀察:< a href=>中的href會被替換成href

20211104194103

繞過成功

20211104194122


0x07(雙寫關鍵字繞過)

1、首先使用<script>alert("xss")</script> =>中的<script>被過濾掉
2、使用onfocus=javascript:alert("xss”) =>中的onfocus被過濾成focus
3、使用"><a href=javascript:alert("xss")>xss</a>// =>中的href被過濾掉

嘗試雙寫關鍵字繞過

20211104194426


0x08(將scipt中的ri編碼十六進制繞過)

首先嘗試<script>alert("xss")</script> =>script中的ri被替換過濾成r_i,所以嘗試編碼繞過

20211104194613

  1. 並且發現我們輸入的payload漏洞代碼,是被傳輸到友情鏈接的<a>標簽中
  2. 所以下一步測試<a>標簽

*經過測試,html實體編碼和hex編碼都可以繞過

20211104194811

漏洞代碼:

javasc&#x72;&#x69;pt:alert(/xss/) 

0x09(strpos()函數繞過)

首先使用之前關卡的漏洞代碼:

<script>alert("xss")</script>
javasc&#x72;&#x69;pt:alert(/xss/)

20211104195414

查看源碼發現:

20211104195501

漏洞代碼:

javasc&#x72;&#x69;pt:alert('http://')

20211104195602


0x0A(更改<from>標簽中<input>的type屬性)

首先使用之前關卡的漏洞代碼:

<script>alert("xss")</script>
javasc&#x72;&#x69;pt:alert(/xss/)

20211104195822

解題技巧是:

  1. 將input標簽的type類型的hidden改為text
  2. 將漏洞代碼填寫到value中

20211104195934

0x0B(前端代碼更改,加入onmouseover())

延續上一題解法:

20211104200103

另一種解法:
看參數t_ref是用於接收Referer參數的


0x0C(使用brup更改User_Agent)

延續上一題的解法

20211104200233

另一種解法:

1、查看參數t_ua傳的值,就可以判斷該參數就是傳遞User_Agent

20211104200313

2、使用brupsuite抓包傳遞漏洞代碼

20211104200426

20211104200757


0x0D(使用brup更改Cookie)

延續上一關技巧,直接更改前端代碼

20211104200844

第二種解法:
通過brupsuite抓包重構數據包

20211104201031

20211104201049


0x0E(Exif隱寫)

延續上一關技巧,直接更改前端代碼

20211104201139


0x0D(ng_lnclude調用外部URL)

查看前端代碼

20211104201247

ng_lnclude的用法:

  • ng-include 指令用於包含外部的 HTML文件。
  • 包含的內容將作為指定元素的子節點。
  • ng-include 屬性的值可以是一個表達式,返回一個文件名。
  • 默認情況下,包含的文件需要包含在同一個域名下。

值得注意的是:

  1. ng-include,如果單純指定地址,必須要加引號.
  2. ng-include,加載外部html,script標簽中的內容不執行.
  3. ng-include,加載外部html中含有style標簽樣式可以識別.
ng_lnclude的作用就是加入一個外部的url鏈接地址

隨后去查看源碼

20211104201606

漏洞代碼:

?src='level1.php?name=<a href="javascript:alert(/xss/)">xss<a/>'

20211104201629

0x0E(空格解析繞過)

前端源碼查看

20211104201735

嘗試空格解析

<img src="" onerror=alert("xss")> 

onerror事件:當img圖片加載失敗會觸發的事件.

20211104201910

20211104201946


0x0F(兩個參數自動拼接)

嘗試通過參數破解

20211104202054

發現會url會自動拼接參數

20211104202205
注:因為谷歌和火狐瀏覽器插件的原因,彈窗沒辦法正常彈出,推薦使用獵豹瀏覽器

0x0G

使用上一關payload

?arg01="onmouse&arg02="alert(/xss/)

20211104202424

仍持續更新...end#


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM