본문 바로가기

Reversing/CodeEngn

[CodeEngn] Basic RCE L03풀이

https://ch.codeengn.com/

 

CodeEngn.com [코드엔진]

코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 세미나, 워크숍을 현업 실무자들과 함께 운영하고 있는 비영리 커뮤니티입니다.

ch.codeengn.com


그림 1

스트링 비교 함수 이름이 FLAG인 것 같다.

 

일단 파일을 실행시켜 주었다.

 

그림 2

독일어,,, 같은데 확인을 눌러주면 어떤 값을 입력하도록 되어 있다.

 

그림 3

X32 디버거를 통해 확인해보았다.

 

항상 처음에 하는 것은 문자열 찾기이다.

 

그림 4

독일어라서 익숙하지는 않지만 RICHTIG는 패스워드가 맞다는 뜻인 것 같다.

입력받는 값을 찾는 게 아니라서 그런지 위에 2G83G35Hs2라는 키 값이 그대로 나와있다.

실제로도 넣어보면 맞다고 한다.

 

그림 5

그러나 우리는 비교 함수를 찾아야하기 때문에 브레이크 포인트를 걸고 확인해보았다.

 

2G83G35Hs2 문자열 위에서 PUSH를 통해 EBP-58이라는 값을 넣고 있어서 해당 부분에 브레이크 포인트를 걸고 확인해 보았다.

 

확인하기 위해 123456789라는 값을 넣고 실행시켜보았다.

 

그림 6

실행시키니

우리가 찾던 EBP-58에 입력 값이 저장되는 것을 확인할 수 있다.

 

입력 값과 정답을 불러온 뒤에 vbaStrCmp라는 함수를 출력하고 있고, 이 함수를 통해 문자열을 비교하는 것을 알 수 있다.

 

사실 strcmp라는 문자만 보더라도 비교하는 함수라는 것을 알 수 있지만, 문제만 푸는 목적이 아닌 공부하는 목적이기 때문에 직접 확인해보았다,,!

'Reversing > CodeEngn' 카테고리의 다른 글

[CodeEngn] Basic RCE L06풀이  (0) 2021.08.01
[CodeEngn] Basic RCE L05 풀이  (0) 2021.08.01
[CodeEngn] Basic RCE L04풀이  (0) 2021.08.01
[CodeEngn] Basic RCE L02풀이  (0) 2021.07.31
[CodeEngn] Basic RCE L01풀이  (0) 2021.07.31