# [CH] THE EYE 1 ###### tags: `Writeup` `Misc` `Chinese` > [name=Curious] ## 思路和解法 進入題目之後會發現有一個登入系統,如果測試一下可以發現有一個 SQL Injection 的洞。但是如果用 SQL Injection 登入的話,就會直接錯過第一段 flag。 仔細想一下,如果題目需要用 SQL Injection 登入的的話,應該會被歸類到 Web 分類,而不是 Misc 分類,加上首頁又有一張圖片,就可以通靈出這應該跟圖片隱寫有關。 如果把圖片丟到 stegsolve (這裡用 [網路版](https://stegonline.georgeom.net/upload) 來說明),然後點擊 `Browse Bit Planes` ![](https://hackmd.io/_uploads/rJ-Dz13En.png) 透過點擊 `<` 和 `>` 來切換不同看圖片的模式,可以在 `Alpha 0` 的時候看到以下畫面 ![](https://hackmd.io/_uploads/HJkZ7124h.png) 這樣就得到登入的帳號密碼和第一段 flag 了。 登入後可以看到以下畫面 ![](https://hackmd.io/_uploads/B1W6Q134n.png) 點擊 `Get Flag !` 之後會發現看起來什麼都沒有發生,但是仔細觀察的話會發現 `session` 這個 cookie 有三段(用 `.` 隔開),第二和第三段每次 reload 的時候都會改變,而第一段只有在 `Get Flag !` 被點擊之後會改變,所以可以推測第二段 flag 會跟 `session` 這個 cookie 有關。 因為 `session` 這個 cookie 怎麼被產生出來跟後端是用什麼做的有關,所以可以用 Wapperlyzer 這個 Chrome extension 來看看後端是用什麼做的。 Wapperlyzer 掃出來後發現後端是用 flask 做的,查詢一下 flask 的 session 是怎麼被製造出來的,可以找到這一篇[文章](https://digi.ninja/blog/cracked_flask.php),文章中有說到 session 的第一段是由後端的 data 做 base64 encode 出來的,所以把點過 `Get Flag !` `session` 這個 cookie 的第一段拿去 base64 decode 就會得到第二段 flag。 > 這邊的 base64 encode 和 decode 是指 `itsdangerous` 這個 Python lib 裡面的 `base64_encode` 和 `base64_decode` 組合兩段得到的 flag 就會是這一題的 flag。 {%hackmd M1bgOPoiQbmM0JRHWaYA1g %}