baby-jwt

EmptyWind·2025년 1월 29일

🚩 문제 설명


J: JSON으로 데이터 관리하며
W: 웹에서 인증을 책임지는
T: 토큰의 강력한 무기, JWT! 😊

Feat. ChatGPT

플래그 형식은 0xH0P3{...} 입니다.


🚀 문제 풀이


  1. VM머신 주소를 통해 웹으로 접근하면 다음과 같은 화면이 나온다.

  2. admin 계정을 등록하고, login을 시도하면 Response 패킷에 Set-Cookie를 통해 token 값이 세팅되는 것을 알 수 있다.

  3. 해당 token 값은 JWT 형식으로 구성되어 있어, JWT의 Signature를 검증하지 않고 Payload를 변조하여 flag를 획득하는 문제로 보인다.
    따라서, Payload 부분을 Base64로 Decode 해보면, usernamerole 값이 정의되어 있는데, role 값이 해당 계정의 권한 값으로 보여 해당 값을 ADMIN으로 변경 후 다시 Base64로 인코딩한다.

  4. 메인 페이지의 Response 패킷에서 javascript를 분석 후 /flag Request 규격에 맞도록 Request 패킷을 생성하여 전송 시 정상적으로 flag 값을 획득 할 수 있다.

[flag] : 0xH0P3{kimsungwha_trying_to_solve_but_still_no_flag_zzzzzzzzlol}


profile
Pentester

0개의 댓글