문제
풀이
이 문제는 crackme 1번 문제와 흡사하다.
하지만 이 문제의 경우 GetDriveTypeA를 이용해야 한다.
GetDriveTypepA의 반환값은 아래의 사진과 같다.
즉, 우리는 반환값으로 5를 가져야 한다.
문제가 풀렸지만 파일을 좀 더 살펴보도록 하자.
이제 파일을 실행해보자.
ollydbg로 파일을 열어보자.
실행을 하다보면 GetDriveTypeA 함수를 지나고나서 EAX 값이 3으로 지정되어 있는 것을 볼 수 있다.
그래서 저 함수를 실행하자마자 EAX의 값을 5로 설정해주고 실행을 하였다.
JE 전에 EAX와 ESI를 비교하는데 둘은 3으로 값이 똑같다.
정상적으로 실행이 되는 것을 확인할 수 있다.
이는 윈도우7에서 진행하였다.
윈도우10에서 올리디버거로 실행을 할 때는 ESI의 값이 401000 이다.
vmware에 윈도우7이 설치되어 있어 거기서 진행을 할 때는 ESI의 값이 0으로 설정이 되어 있다.
문제를 ollydbg로 오픈할 때도 서로 처음 위치가 다르다.
왜 다른지, 무엇이 맞는건지 잘 모르겠다.
메시지만 뜨게 하려면 JE를 수정하거나 연산을 수정하여 풀 수 있으나
함수의 리턴값을 이용하면 EAX의 값을 5로 수정하는 것이 포인트인 것 같은데 그렇다면 ESI가 0이여야 하는 것 아닌가..?
'Wargame & CTF > CodeEngn' 카테고리의 다른 글
[CodeEngn]Basic RCE L04 문제 풀이 (0) | 2021.01.15 |
---|---|
[CodeEngn]Basic RCE L03 문제 풀이 (1) | 2020.11.01 |
[CodeEngn]Basic RCE L02 문제 풀이 (0) | 2020.11.01 |