-
lvl 18Wargame/CodeEngn Basic RCE 2019. 1. 7. 13:32
문제
Name이 CodeEngn일때 Serial은 무엇인가
풀이
→ 프로그램을 실행한다. 아래와 같이 Name 값과 Key 값을 동시에 입력받은 후 확인하는 문제이다.
→ Name에 "CodeEngn" Serial에 "1234"를 입력한 후, 체크를 하면 잘못된 시리얼 번호라는 메시지가 나타난다.
→ 디스어셈블한 후, 분석한 결과 아래와 같은 문자열 비교 함수에서 시리얼 값을 체크하는 것으로 판단된다. 따라서, 해당 함수에 bp를 설정한 후, 디버깅을 시도한다.
→ 디버깅 시 사용자 입력 값은, Name 변수에는 "CodeEngn"을 Serial 변수에는 "1234"를 입력한다.
→ lstrcmpiA 함수에 전달되는 인자가 String1, String2가 있으며, String1 변수에는 사용자가 입력한 시리얼 번호인 "1234"가 스택에 쌓여 함수에 전달되는 것을 확인할 수 있다.
→ String2 변수에는 알 수 없는 번호가 스택에 쌓여 lstrcmpiA 함수에 전달되는 것을 보아 체크하는 시리얼 번호 값으로 정답으로 추정된다.
→ 디버깅을 종료하고 알아낸 값을 입력하면 다음과 같이 성공 메시지를 확인할 수 있다.
댓글