# picoCTF 2023/Java Code Analysis!?! ## Giới thiệu ![](https://hackmd.io/_uploads/BJdgQvmzT.png) Source code [ctf/bookshelf-pico.zip at main - an040702/ctf](https://github.com/an040702/ctf/blob/main/bookshelf-pico.zip) Challenge này yêu cầu ta phân tích mã Java để tìm flag nằm trong file pdf id 5. Đối tượng chính của challenge là hàm `getServerSecret`. Để giải quyết challenge, ta cần tìm cách để đổi role user bằng cách sử dụng JSON Web Token (JWT). ## Mục tiêu và đối tượng 1. Mục tiêu a. Flag nằm ở file pdf id 5 2. Đối tượng a. hàm `getServerSecret` ![](https://hackmd.io/_uploads/r120mPQfT.png) ## Thực hiện Với những hint trên thì ta thấy nếu phía server không tìm thấy file secret thì sẽ hardcode secret key là 1234, nên mình có thể dùng 1234 làm key để gen jwt Bây giờ mình sẽ kiểm tra xem hàm nào để đổi role user ![](https://hackmd.io/_uploads/B1a3VP7Ga.png) Với hàm này thì buộc user phải có quyền admin và id request khác nhau Nên mình sẽ craft lại jwt với role là admin và id khác id mình update ![](https://hackmd.io/_uploads/Hy7A4wQzT.png) Sau khi có được jwt mới thì mình thử send request để update role ![](https://hackmd.io/_uploads/r1pR4wQz6.png) Cập nhật thành công thì mình chỉ cần log in lại và ta được flag ![](https://hackmd.io/_uploads/B1YJBP7M6.png) Flag là `picoCTF{w34k_jwt_n0t_g00d_b19432c9}`