CTFlearn의 여섯번째 문제
풀이수가 생각보다 적지만
사실 풀이가 필요없을만큼 쉬운 문제이다.
분류가 암호학으로 되어있긴 한데
사실 이 문제는 암호 보다는 인코딩과 관련된 문제이다.
암호와 인코딩 둘다 원래 데이터를 다른 데이터로 바꾸지만,
암호에는 Key 값이 사용된다는 특징이 있다.
여기서는 Key가 필요없으니 그냥 인코딩-디코딩 이라고 생각하면 된다.
Q1RGe0ZsYWdneVdhZ2d5UmFnZ3l9
간단하게 문제에서 주어진 이 문자열을 디코딩 하면 된다.
문제 제목으로 유추해 볼 수 있는것처럼
이건 Base64로 인코딩된 값이다.
이러고 바로 디코딩 해버리면 포스팅이 너무 짧아지니,
간단하게 원리를 정리하고 넘어가본다.
abc 라는 단어가 있다.
ASCII 코드로 각각 a는 97, b는 98, c는 99로 나타낼 수 있다.
이 숫자를 이진수로 다시 표현하면,
a는 01100001, b는 01100010, c는 01100011 로 표현할 수 있다.
보통 이렇게 알파벳 1개를 표현할때는 8비트를 사용해서 표현한다.
011000010110001001100011 처럼
인코딩할 문자열의 이진수를 쭉 이어서 쓴 다음에
앞에서부터 6자리씩 끊어서 다시 숫자를 계산한다.
011000 010110 001001 100011 그럼 이렇게
24, 22, 9, 35 4개의 숫자가 나온다.
이제 나온 숫자에 해당하는 문자를 위 색인표에서 찾아 이어써준다.
24, 22, 9, 35 는 YWJj 이다.
이렇게 표현하는것이 base64 이다.
디코딩은 단순하게 역순으로 계산하면 된다.
하지만 굳이 힘들게 직접 계산하지 않아도 된다.
base64는 CyberChef(https://gchq.github.io/CyberChef) 같은 온라인 디코딩 사이트에서
아주 손쉽게 디코딩할 수 있다.
디코딩해서 나온 플래그를 제출하면 된다.
'워게임 > CTFlearn' 카테고리의 다른 글
[CTFlearn] Wikipedia - OSINT (51) | 2022.08.01 |
---|---|
[CTFlearn] Morse Code - 암호학 / 모스부호 (56) | 2022.07.28 |
[CTFlearn] Where Can My Robot Go? - 웹해킹 / robots.txt (47) | 2022.07.17 |
[CTFlearn] Taking LS - 포렌식 / Linux / 숨김파일 (64) | 2022.07.13 |
[CTFlearn] Character Encoding - 암호학 / ASCII (48) | 2022.07.08 |