워게임/CTFlearn

[CTFlearn] ALEXCTF CR2: Many time secrets - 암호학 / XOR

SecurityMan 2023. 2. 6. 11:00

 

CTFlearn 의 예순 다섯번째 문제

 

이번엔 Medium 난이도의 암호학 문제이다.

 

간만에 조금 생각해볼만한 문제가 나왔다.

 

ALEXCTF 라는 대회에서 나왔던 기출문제를 그대로 가져왔나 보다.

 

반응형

 

문제 설명을 읽어보면

 

Fady 라는 사람이 one time pad 를 구현했는데

 

one time pad 에 대해서 정확하게 이해하지 못한 상태에서 만들었다고 한다.

 

플래그는 ALEXCTF{ 로 시작한다는 힌트도 같이 주어져 있다.

 

0529242a631234122d2b36697f13272c207f2021283a6b0c7908
2f28202a302029142c653f3c7f2a2636273e3f2d653e25217908
322921780c3a235b3c2c3f207f372e21733a3a2b37263b313012
2f6c363b2b312b1e64651b6537222e37377f2020242b6b2c2d5d
283f652c2b31661426292b653a292c372a2f20212a316b283c09
29232178373c270f682c216532263b2d3632353c2c3c2a293504
613c37373531285b3c2a72273a67212a277f373a243c20203d5d
243a202a633d205b3c2d3765342236653a2c7423202f3f652a18
2239373d6f740a1e3c651f207f2c212a247f3d2e65262430791c
263e203d63232f0f20653f207f332065262c3168313722367918
2f2f372133202f142665212637222220733e383f2426386b

 

문제에서 주어지는 암호문은 위와 같다.

 

암호와 관련된 문제이니 플래그가 바로 Key 값이라고 생각했다.

 

 

플래그에 맨 앞이 ALEXCTF{ 라고 했으므로

 

CyberChef(https://gchq.github.io/CyberChef/) 에서 첫번째 줄을

 

ALEXCTF{ 로 XOR 해보았다.

 

그랬더니 Dear Fri 라는 단어가 보였다.

 

 

주어진 암호문을 각각 ALEXCTF{ 로 XOR 하면 위와 같은 단어들이 나온다.

 

뭔가 어떤 문장에서 중간중간 잘려나온 느낌이다.

 

 

Dear Fri 로 시작하는 영어 문장이 무엇이 있을까 고민해보니

 

Dear Friend 밖에 없을거라고 생각했다.

 

이번엔 맨 첫줄을 Dear Friend 로 XOR 했다.

 

그럼 ALEXCTF{HER 까지 플래그의 뒷 부분을 알아낼 수 있게 된다.

 

암호문 = 평문 XOR 키

암호문 XOR 키 = 평문
암호문 XOR 평문 = 키

 

그 원리는 위와 같다.

 

XOR 은 교환법칙이 성립하기 때문이다.

 

이런식으로 계속 시도해서 플래그를 조금씩 알아낼 수 있다.

 

 

다음은 세번째줄에 있는 암호문을 이용했다.

 

해당 암호문을 ALEXCTF{HER 로 XOR 하면

 

sed One tim 이라는 문장이 나오는데

 

아마도 이것은 sed One time pad 로 끝나는게 맞을 것이다.

 

 

다시한번 sed One time pad 로 XOR 을 해주면

 

ALEXCTF{HERE_GOE 까지 플래그를 알아낼 수 있다.

 

 

다음으로 다섯번째 줄에 있는 암호문을 이용했다.

 

ALEXCTF{HERE_GOE 로 XOR 해주면

 

is the only encr 이라는 값이 나오는데

 

아마도 is the only encryption 일 것이다.

 

 

다시한번 is the only encryption 로 XOR 을 해주면

 

ALEXCTF{HERE_GOES_THE_ 까지 플래그를 알아낼 수 있다.

 

 

다시한번 세번째줄에 있는 암호문을 이용했다.

 

해당 암호문을 ALEXCTF{HERE_GOES_THE_ 로 XOR 하면

 

sed One time pad encr 이라는 문장이 나오는데

 

이것도 마찬가지로 sed One time pad encryption 로 끝나는게 맞을 것이다.

 

 

sed One time pad encryption 으로 XOR 을 해주면

 

완전한 플래그를 찾을 수 있다.

반응형