워게임/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 값으로 넣어주면
플래그를 찾을 수 있다.
반응형