워게임/CTFlearn

[CTFlearn] Modern Gaius Julius Caesar - 암호학 / 카이사르암호

SecurityMan 2022. 11. 23. 11:00

 

CTFlearn의 서른 여덟번째 문제

 

계속해서 이어지는 암호학 문제이다.

 

반응형

 

이번 문제는 제목에 있는것 처럼 Caesar 암호와 관련된 문제이다.

 

Caesar는 '카이사르' 라고도 읽힌다.

 

들어본 사람도 있겠지만, 카이사르는 로마의 황제 이름이다.

 

 

카이사르는 동맹군들과 소통해기 위해서 위 그림처럼 알파벳을 몇칸 씩 뒤로 옮겨

 

새로운 글자로 암호문을 만들었는데 이게 바로 카이사르 암호이다.

 

예를들어 Apple 라는 단어가 있다면, 이것을 한칸씩 알파벳을 뒤로 옮겨서

 

Bqqmf 라는 암호를 만드는 것이다.

 

하지만 문제 설명을 읽어보면

 

21세기에 누가 알파벳만 가지고 암호문을 만드냐며 keyboard 를 잘 이용해 보라고 한다.

 

BUH'tdy,|Bim5y~Bdt76yQ

 

주어지는 암호문은 이것이다.

 

처음엔 알파벳만 가지고 암호문을 만드냐 라는 말에 주목해서

 

rot47로 푸는 문제인줄 알고 접근했다.

 

 

CyberChef(https://gchq.github.io/CyberChef) 에 가면

 

ROT47 Brute Force 라는 레시피를 이용해 확인해볼 수 있는데

 

아무리봐도 의미있는 문자열이 보이지 않았다.

 

진짜 힌트는 keyboard 를 이용하라는 것에 있었다.

 

decode.fr(https://www.dcode.fr/keyboard-shift-cipher) 에가면 

 

Keyboard Shift Cipher 를 테스트할 수 있는 메뉴가 있다.

 

 

여기에 암호문을 넣어준 뒤 아래 옵션을 설정해 주는데

 

Plaintext expected language 는 당연히 영어일 테니 English 로 지정해주고

 

Keyboard Layout, Shift, Number of keys 같은 세부옵션은 잘 모르니

 

Automatic Detection 으로 지정해줬다.

 

 

Decrypt 버튼을 누르면 왼쪽에 결과가 나오는데

 

그중 두번째에 있는 qwerty → 2 에서 플래그를 찾을 수 있다.

 

근데 여기서 나온 플래그는 그대로 제출하면 문제가 풀리지 않는다.

 

자세히 보면 암호문은 22글자인데, 해독한 평문은 21글자이다.

 

Caesar 암호는 평문을 그대로 Shift 하는것이기 때문에 글자수가 같아야 하는데

 

어떤 이유에서인지 한글자가 누락되어 출력되고 있는 것이다.

 

빠진 글자는 _ (언더바) 이다.

 

플래그 중간 적절한 부분에 언더바를 추가해서 제출하면 문제가 풀린다.

반응형