본문 바로가기

Reversing/CodeEngn

[CodeEngn] Advance RCE L02풀이

https://ch.codeengn.com/

 

CodeEngn.com [코드엔진]

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

ch.codeengn.com


그림 1

정답을 구하는 것이 문제라고 한다.

파일을 실행시켜보았다!

 

그림 2

오잉,,, 아무것도 안 뜬다,,, 일단 EXE INFO로 파일 형식을 확인해주었다.

패킹도 되어있지 않고 그냥 확인하면 되는데 왜 안 뜰까,,, 일단 X32 디버거로 열어주었다.

그림 3 

성공 플래그를 찾기 위해 문자열 찾기를 확인해 주었다.

그림 4

문자열 찾기를 보니까 분명히 콘솔 창에서 뭐가 보여야 하는데,,,, 왜 안보일까,,

일단 ENTER PASSWORD! 부분으로 이동해서 BP를 걸고 실행을 시켰는데

아래와 같은 에러가 발생하면서 진행이 안되었다..

그림 5

찾아보니 라이브러리 함수들을 가져오는 경로가 제대로 설정되어 있지 않아서 발생하는 오류이고 값을 수정해서 패치 파일을 만들어야 한다고 한다,,,

다른 분이 하신 걸 따라해보려고 했는데 도저히 이해가 안 가서,, 더 찾아보다가 윈도우 10에서 콘솔창 실행이 안된다는 이야기를 보아서,,,

윈도우7 가상머신에 파일과 X32 디버거를 다운로드하여주고 거기에서 문제 풀이를 진행하였다.

불편할 줄 알았는데 그냥 윈도우 10이랑 똑같았다!

아래부터는 윈도우7 가상머신에서 진행하였다.

 

그림 6

잘 실행이 된다!

아무 글자나 입력하면 아무 말도 없이 그냥 창이 종료된다.

X32 디버거로 열어주었다.

일단 문자열 찾기에서 “ENTER PASSWORD!” 아래의 함수 호출 부분에 BP를 걸고 한 줄씩 실행하였다.

그림 7

위의 그림에서 EIP가 걸려있는 위치에서 “Enter Password!”라는 문구가 나왔다.

 

그림 8

그리고 위의 그림 위치에서부터 값이 입력이 되는 것을 확인하였다.

그리고 한 모듈은 길어도 끝까지 보자는 마음으로 한 줄씩 실행해 보았다.

중간에 반복문은 반복문 외의 줄을 클릭하고 F4를 눌러서 바로 뛰어넘어갔다.

그리고 내리다 보니 4013C5에서 EDX를 호출하고 나서 프로그램이 종료되는 것을 확인하였다.

 

그림 9

다시 실행해서 이번에는 EDX에서 더 진행하지 않고 EDX 내부로 들어가 보았다.

아래 그림을 보면 내가 입력한 값을 어떤 한 문자들과 계속 비교하는 것을 볼 수 있다.

그림 10

간단하게 살펴보니 EAX에 내가 입력한 123456이라는 값이 저장되어 있고

처음에는 EAX의 한 바이트를 가져와서 0X43과 비교하고 있다.

EAX와 0X43이 같으면 다음 코드로 진행하고, 다르면 18F88A로 점프하는 것을 알 수 있었다.

 

그 다음은 다시 EAX+1에서 한 바이트를 가져와 0X52와 비교하고 같으면 진행, 다르면 18F88A로 점프하는 과정을 반복하고 있다.

여기에서 비교하는 아스키코드들이 정답인 것을 알 수 있다.

해당 비교 문자들을 다 가져오면

C R A A A C K E D !

이라는 문자가 완성되고 실행파일에 입력해보면 WELL DONE!이라는 성공문이 출력된다.

그림 11

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

[CodeEngn] Advance RCE L04풀이  (0) 2021.10.05
[CodeEngn] Advance RCE L03풀이  (0) 2021.10.05
[CodeEngn] Advance RCE L01풀이  (0) 2021.10.05
[CodeEngn] Basic RCE L20풀이  (0) 2021.09.13
[CodeEngn] Basic RCE L19풀이  (0) 2021.09.13