# picoCTF 2023/Java Code Analysis!?!
## Giới thiệu

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`

## 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

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

Sau khi có được jwt mới thì mình thử send request để update role

Cập nhật thành công thì mình chỉ cần log in lại và ta được flag

Flag là `picoCTF{w34k_jwt_n0t_g00d_b19432c9}`