워게임/CTFlearn

[CTFlearn] XOR Is Friend Not Food - 암호학

SecurityMan 2023. 3. 10. 11:00

 

CTFlearn의 일흔 아홉번째 문제

 

암호학 카테고리의 Hard 난이도 문제인데

 

풀어보니 Hard는 아닌것 같다.

 

반응형

 

문제의 목표는 주어진 암호문인

 

\t\x1b\x11\x00\x16\x0b\x1d\x19\x17\x0b\x05\x1d(\x05\x005\x1b\x1f\t,\r\x00\x18\x1c\x0e

 

를 해독하는 것이다.

 

문제 제목에서 XOR 을 언급했으니 

 

당연히 XOR 을 사용해야 할 듯 하다.

 

플래그가 ctflearn{ 으로 시작한다는 아주 중요한 힌트도 주어진다.

 

 

CyberChef(https://gchq.github.io/CyberChe) 에서 우선 주어진 암호문을 From Hex 로 바꿔보았다.

 

Output 을 보면

 

뭔가 결과가 제대로 나오지 않는 느낌인데

 

이건 중간중간에 인코딩된 문자열이 포함되어있어서 그렇다.

 

\t, \r, (, 5 같은 문자열이 중간에 있는것이 보일것이다.

 

이런 값들을 모두 \x00 과 같은 형태로 바꿔줘야 한다.

 

 

바꾸는 방법은 ASCII 코드표를 보고, 

 

\t, \r, ( 등을 16진수로 어떻게 표현하는지 확인한 뒤에

 

\x00 포멧으로 바꿔주면 된다.

 

이렇게 바꾸면 Output 이 아까랑 다르게 나오는걸 볼 수 있다.

 

 

key 값을 알아내는 것은 아주 쉽다.

 

평문 XOR 키 = 암호문 이었으니

 

암호문 XOR 평문(일부) 를 하면 KEY 값을 어느정도 추측이 가능할 것이다.

 

문제 설명에서 언급한 ctflearn{ 을 key 값으로 넣고 XOR을 해보면

 

jowlsjowlhq 와 같은 결과가 나오는데

 

 

이중 반복되는 부분인 앞쪽 부분을 key 값으로 넣어주면

 

플래그를 찾을 수 있다.

반응형