simple login

mercure·2025년 1월 19일
0

Dreamhack

목록 보기
18/18

JWT 문제.. 이 문제 풀려고 jwt공부했는데 결국 못풀어서 결제했다..

사람들 후기가 왜 웹해킹이 아니라고 한 줄 알 것 같다.

function verifyToken(token) {
    try {
        const alg = jwt.decode(token, { complete: true }).header.alg;
        if (alg === 'RS256') {
            return jwt.verify(token, verificationKey);
        } else if (alg === 'HS256') {
            return jwt.verify(token, verificationKey, { algorithms: ['HS256'] });
        } else if (alg === 'ES256') {
            return jwt.verify(token, verificationKey, { algorithms: ['ES256'] });
        } else {
            return false;
        }
    } catch (error) {
        return false;
    }
}

우선 첫 접근은 맞았다. rsa to hmac 취약점을 사용하는건데 이 취약점을 쓰려면 공개키를 얻어야한다.

그다음엔 jwt 여러개를 통해 공개키를 추출하는 방법이 없나 생각했었지만 찾아내지 못하였다.지피티, 구글링을 했지만 못찾았다. 그리고 답답해서 결재를 했다..

결국 결제해서 jwt 2개를 통해 공개키를 얻어내는 툴의 정보를 얻어 플래그를 도출하였다. 물론 이 정보밖에 라는 생각이 잠깐 들었지만 내가 처음에 생각한 방향이 맞았다는것을 확인한 사실이 기뻤다.

이를 통해 공개키를 얻어낸 후 burp suite 확장프로그램 JWT Editor를 이용해 attack을 사용해주면 admin으로 변조된 jwt을 얻을 수 있다.

이제 flag를 볼 수 있을 것이다.

profile
하루에 한걸음씩

0개의 댓글

관련 채용 정보