0x0 前言
在sec-news發現先知上師傅monika發了一個xss挑戰賽的闖關wp([巨人肩膀上的矮子]XSS挑戰之旅---游戲通關攻略(更新至18關)https://xianzhi.aliyun.com/forum/read/1462.html),去看了一下發現是前幾天剛發現的平台,看了一下那個繞狗教程感覺挺不錯的,xss卻沒有玩,那么正巧就玩一下,順便學習一波別的師傅的思路。
http://xss.tv
闖關地址:http://test.xss.tv
自己做了一些,也看了一下先知monika師傅的wp,參考了幾道題。做到了第十八關,剩下的做不了了,考的是flash xss得反編譯分析,暫時沒有去研究了。待日后在弄吧。
注意:題目需要在firefox下做,chrome下的xss audit太猛了,或者關閉再做也是可以的。
Level 1
第一題很簡單,沒有任何過濾,輸出在標簽之間。
參考payload:
<svg/onload=alert(1)>
Level 2
輸出點有兩個
測試之后發現第二個點可以。
閉合掉雙引號,用on事件就可以了。
參考payload:
" onclick=alert(1)> 需要點擊一下輸入框。
" onmouseover=alert(1)> 要鼠標滑過輸入框
Level 3
兩個輸出點,依舊是標簽屬性內的可以
用單引號閉合即可,然后用on事件,大同小異。
參考payload:
' onclick=alert(1)%0a %0a用做換行使的input標簽語法正確,主要是因為過濾了“>”。
Level 4
和level 3如出一轍,只是換成了雙引號
參考payload:
" onclick=alert(1)%0a
這里就不截圖了。
Level 5
這里過濾on事件,on會變成o_n
故用javascript來繞過
參考payload:
"><a href=javascript:alert(1)> 點擊一下鏈接即可
Level 6
這道題同樣是過濾了on,但也過濾src,href等。
但最后發現可以大小寫繞過,參考payload:
"><svg x="" Onclick=alert(1)>
Level 7
這道題過濾script等關鍵字,發現置換為空,所以可以雙寫繞過。
參考payload:
">hello<sscriptcript>alert(1)</sscriptcript>
Level 8
這道題過濾javascript關鍵字,會把javascript變成javasc_ript。可以通過tab制表符繞過(%09)
參考payload:
javasc%09ript:alert(1) 需要點擊一下頁面內鏈接
Level 9
這道題做的時候感覺有點怪怪的,不知道過濾什么,故參考了一下先知的wp,發現是必須要包含http://。
同樣這道題也過濾了javascript關鍵字,會變成javascr_ipt。
參考payload:
javascr%09ipt:alert(1)//http:// 這里必須要用單行注釋符//注釋掉后面的http://,這里因為在javascript偽協議里面,屬於js范疇,所以單行注釋符是可以使用的。
Level 10
這道題做的時候也是蒙圈,keyword過濾了用不了,沒有輸出點怎么破?看了一下先知的wp,發現有隱藏的form和input。
因為也沒過濾什么,最后的參考payload為:
keyword=test&t_sort=" type="text" onclick="alert()
Level 11 12 13
這三道題都是一樣的東西,從第十關過來之后會發現t_ref有東西
參考payload:
" type="text" onclick="alert()
(其他兩題payload是一樣的,只是輸入點不一樣而已,12關輸入點是ua,13關輸入點是cookie)
因為11題是referer,所以得用burpsuite來抓包改,直接用hackbar是改不了的。
修改成payload之后,發包即可。
Level 14
看了先知的wp,才知道是圖片exif 藏有xss payload。但是我自己測試不成功,就不截圖了。詳情可以參考先知的(https://xianzhi.aliyun.com/forum/read/1462.html?page=2)
Level 15
這一關考的angular js的知識,稍微百度一下相關知識
發現ng-include有包含文件的意思,也就相當於php里面的include。看了一下先知的wp。
發現可以包含第一關的頁面,最后的參考payload:
src='level1.php?name=<img src=x onerror=alert(1)>'
Level 16
這一關,過濾了空格。可以選擇用其他符號來繞過比如(%0a%0d)
參考payload:
<img%0a%0dsrc=x%0a%0donerror=alert(1)>
Level 17 18
這兩關的考點是一樣的,同樣的payload可以過。放了個swf在頁面,搞得我以為是flash xss,反編譯,看源碼折騰了一會,發現找不到點。然后想去參考一下先知的,結果發現不是flash xss,淚奔。
參考payload:
onmouseover=alert(1) 注意:onmouseover前面有一個空格
Level 19,20
這兩道題看了一下,都過濾了雙引號,閉合不了。應該是考flash的。
想着flash不會就跳過了這兩道題,去看一下21題,但是訪問報錯了,不知道是沒有了還是必須得做出前面的題才行。那么,也就到這里為止了。
總結:
經過這次闖關,學習到不少東西,也鞏固了不少知識。
做題的時候還有點心急了,導致看了參考,這樣不利於自己解題。重要的是過程,明白其原理!
不能太懶,這樣只能是慢別人半拍。