題目連結

https://learn.cylabacademy.org/library/419

題目解法

啟動題目後開啟 Burp Suite 並開啟他的瀏覽器,隨意註冊帳號並送出,題目會要求輸入 OTP,開啟 Brup Suite 的 Proxy 頁面並啟動 intercept。隨意送出一個 otp 後查看攔截到的請求,會有一段 Cookie: session。 brupsuite

Cookie: session=.eJxVjMsOwiAURP-FtYtWHuX6Ee5dEeBCbCzQ8EhjjP_udWPibs6ZzLyYX_uTXdj1xk7MtxpNL4-QyQBKLzg6LQSESS_CInoHs7JcOsetBFh0VEC7OLbNZJsCzSymNZMrfSfSILWQhLtt7SgVyf0i2XvJweSRXKjUTPOZC6kW_T0dLdS_z_cHspM0ng.af3ngw.AmwUYp3JlxixMAMPGGJxaFRDeos

這個是 Flask Session Cookie 的格式,主要分成三段資料,依序是內容物 (Payload)、時間戳 (Timestamp)、簽章 (Signature),假設是 e 開頭的可以直接使用 base64 解碼,假設是使用 .e 開頭代表有壓縮過,要透過 flask-unsign 才可以解碼。

$ flask-unsign --decode --cookie ".eJxVjMsOwiAURP-FtYtWHuX6Ee5dEeBCbCzQ8EhjjP_udWPibs6ZzLyYX_uTXdj1xk7MtxpNL4-QyQBKLzg6LQSESS_CInoHs7JcOsetBFh0VEC7OLbNZJsCzSymNZMrfSfSILWQhLtt7SgVyf0i2XvJweSRXKjUTPOZC6kW_T0dLdS_z_cHspM0ng.af3ngw.AmwUYp3JlxixMAMPGGJxaFRDeos"
{'city': 'NY', 'csrf_token': '9d5c43db8449e0874addcb916a35bb3a59978f69', 'full_name': 'admin', 'otp': '895845', 'password': 'password', 'phone_number': '0123456789', 'username': 'admin'}

解碼後可以發現 'otp': '895845',將請求修改成 otp=895845 送出即可得到 flag。 flag

picoCTF{#0T----------------------d21}