PicoCTF - Java Code Analysis!?!



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

觀察網站

  1. 依照預設的帳號密碼登入後,先檢視網站,會發現,每次進行 request 都會戴上 jwt
  2. 去 jwt.io 進行解碼後,可以發現裡面的內容包含 Role 等資訊:

觀察下載的原始碼

  1. 用來簽名的 key 其實就存在 server_secret.txt 這個檔案中,內容是 1234。
  2. role 分四個等級,最高權限是 Admin,從網頁書架的標籤與程式碼很多地方都可以看出來這點
  3. 初始化有兩個帳戶,一個是 user,UserID = 1,第二個是 admin,UserID = 2,後者有最高的 Admin 權限
  4. 得到書本內容的 api :
  5. 檢查權限的方式是看 jwt

偽造 jwt

  1. 帶原本的 jwt POST /base/books/pdf/5,會被告知無權限
  2. 在 jwt.io 中修改內容如下,用已知的秘密鑰匙簽名,複製左邊偽造的 jwt
  3. 帶著偽造的 jwt 再 POST /base/books/pdf/5,成功了!將 flag pdf 儲存下來即可
  4. Flag