11---
22layout : post
3- title : " JWT Base64 URL Encoded 취약점 "
4- summary : " JWT Base64 URL Encoded 취약점 "
3+ title : " [byuctf2025] JWTF "
4+ summary : " 공개된 JWT 토큰에 대한 검증 우회 "
55author : whoisdreamer
66date : ' 2025-05-21 15:27:00 +0900'
77category : ['etc', 'learning']
8- tags : cve
8+ tags : ctf
99thumbnail : /assets/img/posts/2025-05-21-0.png
10- keywords : ctf, cve
10+ keywords : ctf
1111usemathjax : false
12- permalink : /blog/JWT-Volunerabillity /
12+ permalink : /blog/BYUCTF2025-JWTF /
1313---
1414
1515## 배경
16- BYUCTF 2025 웹해킹 문제 해결 시도중 찾아보았습니다.
16+
17+ BYUCTF 2025 웹해킹 ` JWTF ` 문제 풀이입니다.
1718
1819## 요약
1920
20- - ` JWT ` 토큰 값을 비교하는 상황에서 취약점 확인
21+ - 주어진 ` admin ` 의 JWT 토큰이 있었으나, 이는 블랙리스트로 등록되어 있음
22+ - JWT 토큰의 특징을 이용해, 같은 값을 가지지만 블랙리스트를 우회함
2123
2224## 문제 상황
2325
@@ -29,6 +31,8 @@ BYUCTF 2025 웹해킹 문제 해결 시도중 찾아보았습니다.
2931
3032다만, 현실적으로 토큰 발급 과정에서 ` admin ` 필드가 ` true ` 인 토큰 값을 발급하는 것은 불가능했었습니다.
3133
34+ ` 점수 - 434점, 푼 팀 - 97/894팀 `
35+
3236## 분석 과정
3337
3438우선 해당 서비스의 백엔드는 파이썬입니다.
@@ -47,6 +51,7 @@ print(base64.urlsafe_b64decode("Twva_sZwHPkmJbLVmvqe1g=="))
4751이를 이용하여 토큰 값의 ` -, / ` 값을 base64 url safe 인코딩 값으로 변환하여 토큰 값에 지장없이 토큰을 조작할 수 있습니다.
4852
4953## 알아낸 내용
54+
5055- ` PyJWT ` 는 ` base64 ` 모듈의 ` urlsafe_b64decode ` 함수를 이용하여 토큰 값을 디코딩합니다.
5156- ` base64 ` 모듈의 ` urlsafe_b64decode ` 함수는 ` url based base64 ` 든 ` base64 ` 든 모두 디코딩 시 같은 결과를 출력합니다.
5257- 이를 이용하여 토큰 값의 ` -, / ` 값을 base64 url safe 인코딩 값으로 변환하여 토큰 값에 지장없이 토큰을 조작할 수 있습니다.
0 commit comments