有一個著名的 Google XSS 游戲 ( https://xss-game.appspot.com/ ) 可以讓您學習如何查找和利用 XSS 漏洞。在用戶注入腳本以彈出 JavaScript 之后,就會進入下一個級別alert()。
以前,進入下一個級別沒有問題,但現在這個游戲似乎有什么問題,因為即使在螢屏上顯示警報后,當你嘗試下一步移動時,也會出現以下訊息:
根據您的瀏覽器 cookie,您似乎還沒有通過上一個級別的游戲。請回傳上一級并完成挑戰。
讓我們試著弄清楚發生了什么。
該站點的源代碼(game.js, lines 11-24)顯示以下代碼負責移動到下一個級別:
function levelSolved() {
if (!userOpenedAlert) {
return;
}
var oReq = new XMLHttpRequest();
oReq.onload = function () {
if (oReq.readyState != 4) return;
document.getElementById('next-controls').style.display = "block";
eval(oReq.responseText);
};
oReq.open("GET", window.location.toString() '/record', true);
oReq.send();
}
請求https://xss-game.appspot.com/level1/record如下所示:
General:
Request URL: https://xss-game.appspot.com/level1/record
Request Method: GET
Status Code: 200
Referrer Policy: strict-origin-when-cross-origin
Response Headers:
alt-svc: h3=":443"; ma=2592000
cache-control: no-cache
content-length: 0
content-type: text/html; charset=utf-8
date: Wed, 31 Aug 2022 18:14:26 GMT
expires: Wed, 31 Aug 2022 18:14:26 GMT
server: Google Frontend
set-cookie: level1=f148716ef4ed1ba0f192cde4618f8dc5; Path=/; Expires=Wed, 22 Jul 2022 12:34:56 GMT; HttpOnly
x-cloud-trace-context: 31ad2e6a5cdd8b63c39bad66e783535b;o=1
Request Headers:
:authority: xss-game.appspot.com
:method: GET
:path: /level1/record
:scheme: https
accept: text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
accept-encoding: gzip, deflate, br
accept-language: q=0.9,en-US;q=0.8,en;q=0.7
sec-ch-ua: "Chromium";v="104", " Not A;Brand";v="99", "Google Chrome";v="104"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
sec-fetch-dest: document
sec-fetch-mode: navigate
sec-fetch-site: none
sec-fetch-user: ?1
upgrade-insecure-requests: 1
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36
因此,正如您所看到的,Set-Cookie應該設定 cookie 的回應標頭。如果通過瀏覽器手動設定這個cookie,那么一切都開始正常作業,并且進入下一個級別沒有問題。
問題實際上是為什么Set-Cookie標題在這種情況下不起作用?該請求不是跨域的,您甚至可以不將其作為 . 執行XMLHttpRequest,而是作為常規GET請求執行,但這無論如何都不起作用。
讓我們幫助谷歌修復這個游戲;)
uj5u.com熱心網友回復:
服務器Expires=Wed, 22 Jul 2022 12:34:56 GMT在 cookie 中發送。所以沒有理由設定這個已經過期的cookie
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/503861.html
