본문 바로가기
Security/Reversing

[CodeEngn] CodeEngn Basic RCE L12

by 단월໒꒱ 2022. 6. 25.

12번 문제이다.

 

 

 

 

일단 key 값을 구해야하는 것 같다.

 

 

 

 

한번 실행해봤는데 역시나 key값이 필요한 모양이다.

 

Ollydbg로 파일을 열어주자.

 

구글링을 해보니 key 값, 패스워드, 시리얼 값 등을 알아낼 때에는 문자열을 보는 게 좋다고 한다.

문자열 검색을 해보았다.

 

 

 

 

3가지 정도가 뜨는 것 같은데, 그 중에서 right key를 찾았다며 축하하는 문자열이 있다.

여기로 이동해보았다.

 

 

 

 

바로 위쪽에서 CMP로 EAX와 7A2896BF를 비교하는 부분이 있다.

 

두 값이 같으면 축하문구가 나오고 아니면 점프한다고 한다.

 

따라서 EAX 값이 7A2896BF가 되어야 한다.

 

 

 

 

비밀번호에 10을 입력해보았다.

 

 

 

 

EAX에 A가 저장되는 것을 확인할 수 있다.

10진수로 입력하면 16진수로 저장되는 건가 싶어서 다시 한번 확인해보았다.

 

 

 

 

이번엔 14를 입력해보았다.

 

 

 

 

예상대로 E가 저장되어 있는 것을 확인할 수 있었다.

 

 

 

 

EAX 값이 7A2896BF이므로 이거를 10진수로 바꿔주면 2049480383이 나온다.

 

 

 

 

입력해보았다.

 

 

 

 

성공 메세지가 출력되었다.

 

 

이제 성공메세지 대신에 key 값이 출력되도록 덮어써보자.

HxD를 실행시키고 파일을 올린 뒤 성공 문구가 출력되는 부분을 찾는다.

 

 

 

 

이 부분을 2049480383으로 바꿔줘야하는데, 16진수 아스키코드로 바꿔서 넣어주고 빈 부분은 0으로 그냥 채워준다.

 

 

 

 

그러면 위의 화면처럼 된다.

 

key 값을 overwrite한 영역을 보면 00000D3B ~ 00000D44까지임을 알 수 있다. 

하지만 문자열의 맨 끝에는 NULL이 들어가는 것을 생각하면 00000D45까지라고 할 수 있다.

 

따라서 문제에서 말하는 영역은 0x0D3B ~ 0x0D45 이다.

 

결론적으로 답은 20494803830D3B0D45이다.

 

 

 

 

댓글