Skip to content

Commit 6dfbc36

Browse files
committed
BYUCTF2025-JWTF 글 1차 첨삭 =
- CVE코드가 없으므로 CVE관련 언급 삭제 - JWT Volunerability는 종류가 많으므로 명칭 수정 - 해당 문제상황 관련 CTF정보 명시
1 parent a870637 commit 6dfbc36

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed
Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,25 @@
11
---
22
layout: post
3-
title: "JWT Base64 URL Encoded 취약점"
4-
summary: "JWT Base64 URL Encoded 취약점"
3+
title: "[byuctf2025] JWTF"
4+
summary: "공개된 JWT 토큰에 대한 검증 우회"
55
author: whoisdreamer
66
date: '2025-05-21 15:27:00 +0900'
77
category: ['etc', 'learning']
8-
tags: cve
8+
tags: ctf
99
thumbnail: /assets/img/posts/2025-05-21-0.png
10-
keywords: ctf, cve
10+
keywords: ctf
1111
usemathjax: 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

Comments
 (0)