워게임/CTFlearn

[CTFlearn] Base 2 2 the 6 - 암호학 / Base64

SecurityMan 2022. 7. 24. 11:00

 

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) 같은 온라인 디코딩 사이트에서

 

아주 손쉽게 디코딩할 수 있다.

 

디코딩해서 나온 플래그를 제출하면 된다.

반응형