--- title: login description: picoMini By redpwn, Web Exploitation, 100 points tags: picoCTF 練習, picoMini By redpwn, Web Exploitation, 100 points --- login === 問題 ---  [login.mars.picoctf.net](login.mars.picoctd.net) 解法 --- 本題一打開網站,第一個想到的就是... 打開 Dev tools 先!  > 這應該算是做慣這種資安事情的反射了..找漏洞.. 一打開 Dev Tools 後,就回頭看一下頁面。 標準的帳號密碼登入。 直覺來看,就是登入後拿取 flag。 重點是怎麼拿取 flag。 先去看看這個網站怎麼寫的:  看到下面的 form,method 是 POST,但是沒有 Action。 所以合理懷疑傳輸資料的東西放在 js 裡面。 所以我們現在點到 Source 看到 js 有什麼:  看到這裡我笑了...呵呵呵...是一個偷懶的寫法而造成的資安漏洞。 不過這邊看起來比較像是故意的,正常人應該不會這樣寫吧... 所以我們看到重點 `return` 的部分: ```js! return "YWRtaW4" !== t.u ? alert("Incorrect Username") : "cGljb0NURns1M3J2M3JfNTNydjNyXzUzcnYzcl81M3J2M3JfNTNydjNyfQ" !== t.p ? alert("Incorrect Password") : void alert(`Correct Password! Your flag is ${atob(t.p)}.`) ``` 如果有懂 js 的人,應該可以了解到中間用到了 condition 的表達式。所以他應該是確認 username 跟 password 是不是正確的。 但是很明顯,這個比對的資料值是經過編碼的,雖然經驗上就知道是 `base64` 的編碼,但是為了驗證,我們用 **ChatGPT** 來檢查看看:  連線上工具都省了,ChatGPT 幫你翻譯完了.... 另解 --- 這邊還是用 linux 工具 `base64` 來解碼看看:  反正解出來答案也是一樣的,不過練習一下 linux 工具也是好的! 結語 --- 這題真的用 ChatGPT 滿犯規的,不過在資安的攻擊面前,只要有用的工具都是好工具啦!
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up