CTF | wargame

XCZ.kr / Prob26 (암호, 3자리 암호화)

nopdata 2016. 7. 22. 01:58

Prob 26


어떤 소스로 인코딩된 문자열을 해독하는 문제이다. 소스는 제공되지 않으며, 암호화 프로그램만 제공된다.

이 암호화에는 일정한 규칙이 있다.

3가지 문자를 암호화해서 4자리의 값이 나온다. aaaaaa를 인코딩 할 경우

aaa가 인코딩된 값 =U5:가 연속으로 나온다.

원래는 복호화 소스를 만들 계획이었지만 일단 시간이 없어 문제 풀기에 집중했다.

내가 푼 방식은 약간 노가다가 필요하다 무식한거일지도

먼저 한자리를 넣었을때 나오는 인코딩값을 알아낸다. 파이썬코드를 이용해서 값을 넘기고 넘어온 값을 뽑은것이다.

0,1,2,3을 인코딩 한 값을 보면 맨 앞자리와 두번째 자리만 다르다.

제일 첫번째로 입력한 문자는 결과의 첫번째, 두번째에 영향을 주고, 두번째는 0,^,L,D이 반복된다. 이 규칙을 가지고 이제 두번째 까지 알아낸다.


이번엔 두자리를 넣었을때 나오는 인코딩 값들을 가져온다.

D,E,F,G를 각각 첫자리로 하고 두번째자리를 바꿔가며 얻어온 값들이다

보면 D,E,F,G는 각각 결과의 두번째 자리를 0,^,L,D로 바꾼다. 이제 이 두가지를 가지고 암호문을 해독해 보도록 하면

먼저 암호문의 제일 첫 4자리 Yh9/ Y는 DEFG중 하나로 시작한다. 이어서 두번째 자리가 h이어야 하는데 결과가 h가 되는 값을 가지는 첫번째 자리는

G이다. 첫번째 자리가 G인것을 알았고 이제 두번째 자리를 파악해야 하는데 보면 암호문이 Yh9/다. 세번째가 9이면 아마도

Gp ENCODE : Yh0P

Gq ENCODE : Yh4P

Gr ENCODE : Yh8P

Gs ENCODE : Yh@P

이 중에서 Yh8P다음에 있을 것이다.


이제 Gr을 넣은 후 프로그램을 돌려 마지막 자리가 무엇이 될지 찾는다.

Gr을 넣고 돌려본 결과 암호문인 Yh9/가 되기 위해서 평문은 Gre가 되어야 한다.

이런 방법으로 처음부터 마지막까지 암호문을 풀어내면 평문은

Great! is this very easy..? anyway, Key is b45351x7yF0uRC1PH3RcH4n93 가 된다.


XCZ.kr Answer :b45351x7yF0uRC1PH3RcH4n93