[CodeEngn] Basic RCE L18
ame이 CodeEngn일때 Serial은 무엇인가
문제 파일을 다운로드 받고 PEiD에서 패킹 여부를 확인해보니, 별다른 언패킹 과정은 필요없어 보였다.
문제 파일을 디버거에서 실행시킨 후 실행해보았다.
다음과 같이 name과 serial 을 입력받는 메시지 박스가 나타나는 것을 볼 수 있다.
디버거에서 search for -> all referenced text strings 로 텍스트 입력시 나타나는 문구를 찾아보았다.
확인해보면, you serial is wrong, try again 이라는 문구를 볼 수 있고 더블클릭하여 해당 주소로 이동한다.
상단의 je문으로 성공/ 실패 시 문구가 각각 갈리는 것을 확인할 수 있고
바로 위에 eax 값들이 or연산 되는 것을 알 수 있다.
eax가 함수의 반환 값을 나타내는 레지스터이기 때문에 위에 함수를 확인해보는 것이 필요하다.
상단의 함수는 lstrcmpiA 함수이다.
IstrcmpiA함수 : 함수의 두 문자열을 비교하는 함수
이 함수의 두 문자열이 인자로 전달되고, 두 문자열이 비교했을 때 같은 값이여야 성공할 수 있는 것이다.
IstrcmpA함수가 호출되는 주소에 bp를 찍고 실행해보았다.
이때 name에는 문제에서 주어진 값을 넣고 serial에는 임의의 값을 넣었다.
이후 디버거를 확인해보면 내가 넣은 임의의 값 상단에 어떤 값이 주어진 것을 확인할 수 있다.
아까 알아보았듯이 IstrcmpiA함수는 두 문자열을 비교하는 함수이고 or로 인해 같을 때 성공하기 때문에
정답은 06162370056B6AC0일 것이다.
프로그램을 다시 실행시킨 후 name과 serial을 넣어주고 check를 누르면
성공 메시지 박스가 출력된다.
정답은 06162370056B6AC0