CTFlearn의 서른번째 문제
이번엔 Medium 난이도의 Cryptography 문제이다.
문제 제목의 substitution cipher 는 치환암호 라는 뜻으로
비트나 문자, 블록 등을 다른 비트, 문자, 블록으로 치환하는 암호를 의미한다.
주어진 링크로 들어가면 이렇게 암호문이 주어진다.
영어처럼 보이지만, 전부 다 알 수 없는 단어로 이루어져 있는게 보인다.
이건 각 알파벳을 다른 알파벳으로 치환해서 적어놓은 암호문이기 때문이다.
https://www.boxentriq.com/code-breaking/cryptogram
치환 암호를 풀수 있는 사이트를 찾아가 암호를 풀어준다.
이렇게 암호문을 적어넣고,
Start Manual Solving 버튼을 누르면 풀이를 시작할 수 있다.
아래쪽으로 내려보면 각 알파벳 위에 이렇게 _ 가 표시되어있고,
key 에 보면 알파벳들을 어떤 알파벳으로 치환할 것인지 적어넣을 수 있다.
이제 차근차근 해결하면 된다.
가장 먼저 주목한 부분은 이부분이다.
RTETDZTK 6, 1995 라고 적혀있는데 뭔가 날짜를 적어놓은것 같았다.
RTETDZTK 부분은 월을 의미하는 부분인것 같고,
알파벳 수가 8자리이면서, 두번째와 네번째 알파벳이 같은 달은 'december' 밖에 없다.
key 부분에서 이렇게 각 알파벳에 대응하는 알파벳을 적어주면 된다.
r은 d로 t는 e로 바꾸는 식이다.
key를 채워넣으면 아까 _ 로 표시되어있던 부분에 알파벳이 맞춰서 들어간다.
다음으로 체크한건 MIT 라는 단어이다.
문장 맨 앞이나 중간에 잦은 빈도로 등장하고,
치환을 했을때 맨 뒤 알파벳이 e로 끝나는것은
'the' 밖에 없다고 생각했다.
마찬가지로 key를 채워준다.
그다음 채운것은 LWFRAB 라는 단어이다.
단어 뒤쪽에보면 december 21, 1989 1990 이라는 말이 나오는데,
문맥상 네번째 알파벳이 d인 단어는 요일 중 하나일 것이라 생각했다.
6글자로 이루어진 요일은 monday, friday, sunday 세가지 밖에 없는데,
이중 monday의 m , friday의 r 은 이미 다른 알파벳으로 치환되어있다는 것을 알고있으니
남은건 'sunday' 밖에 없다.
마찬가지로 계속해서 key를 채워준다.
그다음 주목한 단어는 EIOSRKTF'L 이다.
지금까지 알아낸 key 로는 이 단어가 ch__dren's 인데,
딱봐도 'children's' 인것이 분명했다.
마찬가지로 key를 계속해서 채워준다.
그다음은 ROASGUWT,
지금은 dial__ue 라고 나오는데
이것 역시 'dialogue' 인것이 분명하다고 생각했다.
그다음 ZTYGKT 와 AYMTK 가
be_ore / a_ter 로 각각 해석되는걸 보고 Y는 f 임을 확신했다.
마찬가지로 LWHHGKM 이 su__ort 인것을 보고
H는 p 임을 알아냈고,
C 는 w,
Q는 k 인것까지 알아냈다.
그동안 알아낸 key는 이정도인데
이정도만 알아내도 플래그를 찾을 수 있다.
사실 이렇게 힘들게 안해도
Auto Solve 버튼을 누르면
경우의 수를 계산해서 자동으로 key를 찾아주는 기능도 있다.
'워게임 > CTFlearn' 카테고리의 다른 글
[CTFlearn] RSA Noob - 암호학 (51) | 2022.10.23 |
---|---|
[CTFlearn] A CAPture of a Flag - 포렌식 / Wireshark (40) | 2022.10.15 |
[CTFlearn] PikesPeak - 포렌식 / HxD / Strings (40) | 2022.10.09 |
[CTFlearn] Milk's Best Friend - 포렌식 / HxD (63) | 2022.10.04 |
[CTFlearn] I'm a dump - 포렌식 / IDA / HxD (40) | 2022.10.01 |