Without a Break

[CodeEngn] Basic RCE L17 본문

Reversing/Wargame

[CodeEngn] Basic RCE L17

와븨 2023. 5. 18. 20:53

MD5 :128비트 암호화 해시 함수

 

 

실행 파일을 디버거로 열어 프로그램을 실행하면 위와 같이 Name과 Key를 입력할 수 있는 창이 뜬다.

 

Name을 찾아보자.

text strings를 살펴보니 성공했을 때 문자열을 발견할 수 있었다

 

성공 문자열이 있는 위치로 이동한 후, 성공 문자열이 있는 윗부분에서 문자열 길이를 비교하는 곳을 찾을 수 있었다.

Name은 한글자라고 했으므로 EAX와 비교하는 문자열 길이를 1로 고쳐준다.

 

성공 문자열에서 밑으로 내리다보니 Key 값을 생성하는 첫번째 루틴을 찾을 수 있었다.

입력한 Name 값으로 Key값의 앞자리 4자리를 생성하는 것을 알 수 있음

 

성공 문자열 위쪽에 점프하는 부분 앞에 BP를 걸어준다.

 

F8로 프로그램을 실행해서 Name을 임의로 입력해줬다. (A)

Key 값은 문제에서 나와있었던 값을 입력함

 

Name과 Key를 입력하고 Check it을 누르면 위와 같이 BP를 건 곳으로 이동한다.

내가 입력한 Name인 A는 올바른 Name의 키 값과 다름을 알 수 있었음

-> 내가 입력한 Name으로 생성한 키 값 : FFE3 ~

-> 문제에서 원하는 Name으로 생성한 키 값 : BEDA ~ 

 

Name을 찾기 위해 아까 찾았던 Key 생성 루틴에 맞춰서 코드를 짜줬다. (Key 생성 루틴 그대로 코드 짜면 됨)

앞 4글자가 BEDA인 한글자를 찾으면 됨

 

코드를 실행해보니 답은 F였다.

 

입력해보니 정답임

 

정답은 Name의 MD5 해쉬값이므로 F를 MD5로 암호화해주면 된다.

 

성공!

 

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

[CodeEngn] Basic RCE L19  (0) 2023.05.23
[CodeEngn] Basic RCE L18  (0) 2023.05.18
[CodeEngn] Basic RCE L16  (0) 2023.05.17
[CodeEngn] Basic RCE L15  (0) 2023.05.17
[CodeEngn] Basic RCE L14  (1) 2023.05.11