PicoCTF - Java Code Analysis!?!
26 Apr 2023picoCTF
Challenge
Tags
PicoCTF 2023 / Web Exploitation
Description
BookShelf Pico, my premium online book-reading service.
I believe that my website is super secure. I challenge you to prove me wrong by reading the ‘Flag’ book!
Here are the credentials to get you started:
Username: “user”
Password: “user”
Writeup
觀察網站
- 依照預設的帳號密碼登入後,先檢視網站,會發現,每次進行 request 都會戴上 jwt
- 去 jwt.io 進行解碼後,可以發現裡面的內容包含 Role 等資訊:
觀察下載的原始碼
- 用來簽名的 key 其實就存在 server_secret.txt 這個檔案中,內容是 1234。
- role 分四個等級,最高權限是 Admin,從網頁書架的標籤與程式碼很多地方都可以看出來這點
- 初始化有兩個帳戶,一個是 user,UserID = 1,第二個是 admin,UserID = 2,後者有最高的 Admin 權限
- 得到書本內容的 api :
- 檢查權限的方式是看 jwt
偽造 jwt
- 帶原本的 jwt POST
/base/books/pdf/5
,會被告知無權限 - 在 jwt.io 中修改內容如下,用已知的秘密鑰匙簽名,複製左邊偽造的 jwt
- 帶著偽造的 jwt 再 POST
/base/books/pdf/5
,成功了!將 flag pdf 儲存下來即可 - Flag