tmxklab

[CodeEngn] Basic RCE L01 본문

War Game/CodeEngn

[CodeEngn] Basic RCE L01

tmxk4221 2021. 1. 28. 13:14

1. 문제

1) 문제확인

  • 실행 결과 CD-ROM Drive가 아니라고 한다.


2. 접근방법

  • GetDriveTypeA()를 호출하고 eax값과 esi를 비교하여 같아야 할 듯하다.
  • esi값은 어떤 값인지는 모르겠는데 eax값은 GetDriveTypeA()의 리턴 값으로 생각된다. 최종적으로 "cmp eax, esi"을 실행하기 전까지 eax는 2번 감소하게 된다.

GetDriveTypeA()는 디스크 드라이브 타입을 알아내는 함수이며 리턴 값에는 드라이브 타입을 알 수 있다.

  • DRIVE_CDROM일 때 리턴 값이 5인 것을 알 수 있다.


3. 문제풀이

  • GetDirveTypeA()의 인자에 C드라이브 path가 들어가며 실행 후 리턴 값으로 3이 eax에 저장되어진다.

  • eax가 2번 감소되어 1이 저장되어 있고 esi에는 0x401003이 존재한다.
  • 따라서, eax값을 변경하든 esi값을 변경하든 아니면 cmp를 실행하고 ZF값을 변경하든 주작하여 분기해야할 듯하다.

  • 나는 걍 편하게 esi값을 1로 변경하고 실행시켰다.

??? 사실 여기서 뭐 어쩌란건지 몰랐는데 문제가 CD-ROM일 때 GetDriveTypeA()의 리턴 값을 구하라는 거였으니 그냥 5를 입력하면 된다.ㅋㅋㅋ


4. 몰랐던 개념

'War Game > CodeEngn' 카테고리의 다른 글

[CodeEngn] Basic RCE L06  (0) 2021.01.28
[CodeEngn] Basic RCE L05  (0) 2021.01.28
[CodeEngn] Basic RCE L04  (0) 2021.01.28
[CodeEngn] Basic RCE L03  (0) 2021.01.28
[CodeEngn] Basic RCE L02  (0) 2021.01.28
Comments