Korea 
Key 값이 BEDA-2F56-BC4F4368-8A71-870B 일때 Name은 무엇인가 
힌트 : Name은 한자리인데.. 알파벳일수도 있고 숫자일수도 있고.. 
정답인증은 Name의 MD5 해쉬값(대문자) 

English 
What is Name when the Key is BEDA-2F56-BC4F4368-8A71-870B 
Hint : The name is 1 letter and it could be either alphabetic or numeric. 
Verify your solution with the MD5 value of the Name. 

 

MD5로 인증을 하라 하니 우선 MD5에 대해 먼저 알아야 하겠다.

http://ko.wikipedia.org/wiki/Md5

MD5(Message-Digest algorithm 5) 128비트 암호화 해시 함수이다. RFC 1321 지정되어 있으며, 주로 프로그램이나 파일이 원본 그대로인지를 확인하는 무결성 검사 등에 사용된다. MD5 임의의 길이의 메시지(variable-length message) 입력받아, 128비트짜리 고정 길이의 출력값을 낸다.

 

해시 값을 생성할 때는 http://www.md5decrypter.com/ 여기서 하라.

 

위 글을 보면 알겠지만… 128비트(16바이트)를 프로그램에 입력해야 할 것 같다. 그리고 그걸 어떻게 하든 키값과 비교를 하겠지. 일단 임의의 16바이트를 넣어 보거나, 아니면 다른 프로그램을 써서 알파뱃을 하나씩 넣어 보면서 풀 수도 있겠지.. 어떻게 푸는가는 자유다. 여기서는 임의의 16바이트를 넣고 그것으로 분석한다.

이곳부터 분석해보면 될 것 같다.

 

 

빨간색 박스 두 개의 함수가 핵심적인 역할을 하고 있다. 저곳을 분석하면 될 것 같다.

 

일단 비교 함수라고 체크되 있는 곳을 실험해 보자.

함수 호출하기 전에 EAX, EDX의 레지스터를 똑같이 맞추고 실험했다. 결과는 비교함수는 단순히 비교만 한다는 것을 알아 낼 수 있었다.

그럼 이제 분석할 곳은 L17.0045B850으로 좁혀 지는군..

 

근데 저 함수를 분석하기가 너무 힘들더라;

그래서 생각을 달리 해보기로 했다. 왜 CodeEngn에서 답은 한글자라고 힌트를 줬을까?

거기에 초점을 맞춰서 생각을 했는데…. 코드를 조금 수정하고 하니 답이 바로 나오더라;

 

 

Bloger: moltak.net

'Security > Reversing' 카테고리의 다른 글

Reverse Engineering  (0) 2010.04.22
CodeEngn 18  (0) 2010.04.14
CodeEngn 16  (0) 2010.04.13
CodeEngn 15  (0) 2010.04.13
CodeEngn 14  (0) 2010.04.12

+ Recent posts