Wargame & CTF/CodeEngn

[CodeEngn]Basic RCE L01 문제 풀이

seomj 2020. 9. 27. 15:26

문제

 

풀이

이 문제는 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