본문 바로가기

CodeEngn

[CodeEngn] Basic RCE L05

<문제>

 

<풀이>

01번 문제(https://studyforall.tistory.com/65)를 풀었을 때와 같이 문제 파일을 다운로드하고,

7-Zip File Maneger로 압축을 푼다.

 

05.exe를 실행해본다.

입력값을 받는 창이 뜬다.

기본 입력값을 변경하지 않고 Register now! 를 클릭해본다.

 

Wrong Serial,try again! 이라는 오류메시지가 뜬다.

올바른 입력값을 찾아야 한다.

 

ollydbg를 이용해 파일을 열어보았다.

어셈블리 코드를 열어봤는데 아무런 심볼도 찾을 수 없다.

뭔가 이상하다.

 

PEiD를 이용해 05.exe의 파일 정보와 패킹 방식 정보를 확인해본다.

UPX로 패킹 되어있는 것을 알 수 있다.

UPX 패킹은 실행 파일 내부에 있는 코드를 압축하는 것인데,

주로 파일의 크기를 줄이거나 실제 코드를 숨길 때 사용한다.

 

 

upx303w 툴을 다운받는다.

upx303w.zip
0.31MB

 

압축을 풀고 언패킹할 05.exe 파일을 해당 폴더로 옮긴다.

 

경로창에 cmd를 입력하고 엔터를 누른다.

 

cd 로 이동할 필요없이 해당 폴더에서 command 창이 실행된다.

 

upx -d 05.exe 명령어를 입력해 05.exe를 압축해제한다.

 

압축을 풀기 전에 130KB였던 05.exe가 압축을 푼 뒤에 308KB로 커진 것을 볼 수 있다.

 

 

다시 05.exe를 올리디버거로 열어본다.

화면에서 우클릭하여 Search for > All referenced test strings 로 들어간다.

 

텍스트 스트링들을 살펴보다가

오류메시지 및 성공메시지에 해당하는 듯한 텍스트무더기를 발견했다.

 

그 텍스트무더기에서 등록키인듯 보이는 줄을 클릭하고 Enter를 눌러 main thread에서 해당 명령어를 찾는다.

 

 

main thread에서 "Registed User" 문자열 다음에 오는 CALL 명령어 줄에 breakpoint를 걸고,

"GFX-754-IER-954" 문자열 다음에 오는 CALL 명령어 줄에도 breakpoint를 건다.

 

다시 프로그램을 처음부터 실행시켜본다.

중간에 입력창이 뜨면 임의의 값을 입력하고 프로세스를 진행시킨다.

 

레지스터 영역을 보면 EAX에 앞서 임의로 입력한 "APPLE"이 들어가 있고,

EDX에 "Registered User" 라는 값이 들어있는 것을 볼 수 있다.

이 상태로 계속 한 줄 씩 진행시켜본다.

 

실행 흐름이 에러메시지를 띄우는 쪽으로 넘어간다.

 

 

다시 프로그램을 처음부터 실행해본다.

이번에는 입력창이 떴을 때 "Registered User"를 입력해봤다.

 

EAX와 EDX 모두 "Registered User" 라는 값이 들어갔다.

 

명령어를 한 줄 씩 진행시켜보면

실행흐름이 에러메시지 쪽으로 가지 않고 아래로 진행된다.

그리고 이번에는 등록키가 일치하는지 확인한다.

 

등록키가 "GFX-754-IER-954"이면 성공메시지를 띄워준다.

 

<정답제출>

코드엔진의 Auth페이지에 Key 값으로 GFX-754-IER-954를 입력하면 Success!!가 뜬다.

'CodeEngn' 카테고리의 다른 글

[CodeEngn] Basic RCE L07  (0) 2023.11.02
[CodeEngn] Basic RCE L06  (1) 2023.11.02
[CodeEngn] Basic RCE L04  (0) 2023.09.23
[CodeEngn] Basic RCE L03  (0) 2023.09.23
[CodeEngn] Basic RCE L02  (0) 2023.09.23