今天要來介紹一下可以練習 XSS 的地方
google 把拔的 XSS-Game
那在玩這個之前
建議大家使用 Chrome 以外的瀏覽器
不然有時候會遇到很尷尬的情況
比如說攻擊無效被 chrome 先擋下來之類的
太安全也不是個好事呢 (X
今天就來一一講解裡面的小練習吧~
總之就是不斷的觸發 alert()
總共有 6 關
扛住 !!!
Let's Go ~
很快的
按鈕一按下去來到了第一關
大家可以先按底下的 source code 出來看看
可以發現在 #45 的地方
我們的輸入直接被用字串串接的方式放進網頁中 (意思就是沒過濾辣~)
直接送一個最基本的 javascript 去觸發 alert
<script>alert()</script>
一個看起來是留言版的地方
你會發現你丟 Level 1 的 payload 進去發現沒用
這是因為在 index.html#32
的地方使用 innerHTML()
將我們輸入的東西放上去
innerHTML
生成出來的 <script>
元素並不會執行
因此我們要透過 HTML 本身的元素來執行 js
最方便的就是利用加載圖片錯誤來自動觸發
<img src="" onerror="alert()">
第三題有不同圖片讓你選
亂點會發現網址上面有變化
接著我們看到 index.html
的 source code
會發現網址上 #
後面的數字好像就是拿來存取圖片的
而且一樣用字串串接的方式 (又沒過濾ㄌ
這次要做的跟第二題頗像
構造一個圖片加載錯誤來觸發
只是這次是從語法中間來改造
0' onerror="alert()" '
一上來就來個輸入框,意圖使人搞事
首先發現這是一個計時器
而且點開始後會跳到下一頁把你輸入的東西放在網頁上
倒數完之後會噴個 alert 給你
我們直接來看看 timer.html#21
的地方
發現這個 {{ timer }}
應該就是我們輸入秒數的地方
這邊要注意程式會將我們的輸入放在 onload
這個 attribute 中
因此我們要構造一個把 startTimer()
關閉的語法
再自己串上 alert
再把後面的語法關閉好
');alert();a('
首先點 Sign up
進去下一頁
會發現網址上出現了 next=confirm
的東西
然後有個 Next >>
的按鈕
去看看 signup.html
source code 可以發現
#15
的地方就是我們上面的 GET 參數
那這邊有個小技巧
就是 URL 其實可以直接觸發 javascript 喔~
next=javascript:alert()
輸入完之後記得按一下 Go
去做 request
讓這個網站目前的 next
狀態變成我們後來輸入的東西
跟著兔兔辣~
從網頁的訊息跟 URL 知道會從外部 include 一個 js 檔案進來
看一下 index.html
裡面有個函數叫做 includeGadget(url)
一直從 17 ~ 41 行
而這個 url 就是網址 #
後面的內容
函數一開始就跟你說會檢查 http://
與 https://
但只限制小寫
我們隨便改其中一個字變大寫就繞過了 ww
或是只打 //
這樣其實也會被認定為網址的意思
然後這邊要注意一下
以前這題目是真的可以自己引外面檔案來用的
但不知道什麼時候突然不行了 @@
因此就用底下 hint 中給的 google js 吧
把 foo
改成 alert
//google.com/jsapi?callback=alert
看到這不用我說了吧
吃雞囉