[CodeEngn] Basic RCE L17
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로 암호화해주면 된다.