본문 바로가기

CodeEngn

[CodeEngn] Basic RCE L15

<문제>

 

 

<풀이>

우선 문제 파일을 다운로드하고, 7-Zip File Maneger로 압축을 푼다.

 

15.exe를 실행해본다.

NameSerial을 입력하는 메시지박스가 뜬다.

 

문제에 따라 Name에 CodeEngn을 입력하고 Serial은 임의의 값으로 채운다.

Check it! 버튼을 클릭한다

 

Try Again! 이라는 에러메시지가 뜬다.

 

 

본격적으로 리버싱을 하기 위해 디버거로 15.exe열어본다.

 

 

 

성공/오류메시지의 위치를 찾기 위해 CPU 창에서 우클릭, Search for > All referenced text strings 를 클릭한다.

성공/오류메시지의 위치를 찾는 이유는 그 부분에 breakpoint를 걸기 위함이다.

성공/오류메시지 근처에 분기하는 CMP문이 있을 확률이 높은데, 해당 CMP 문에서 serial을 명시하고 있을 가능성이 높다.

 

성공/오류 메시지를 찾아 해당 부분에 breakpoint(F2)를 건다.

 

이전의 화면으로 돌아가기 위해 다시 상단 메뉴바에서 View > CPU 를 클릭한다.

 

F9를 눌러 파일을 실행하면 프로그램이 실행된다.

Name 부분에 CodeEngn을 입력하고 Serial 부분에 1234를 입력하고 Check it!을 클릭하여

프로그램의 흐름이 진행되도록 한다.

 

Try Again! 이라는 오류메시지 부분으로 실행흐름이 흘러갔다.

그 근처에서 CMP문을 찾았다.

EAX값과 45B844주소에 있는 데이터를 비교한다.

 

45B844주소에 어떤 데이터가 있는지 확인하기 위해 해당 명령어 줄에서 우클릭한다.

Follow in Dump > Memory address를 클릭한다.

 

화면 하단의 Hex dump 부분이 45B844 부분의 주소를 보여준다.

60 61이라는 값이 쓰여있는 것을 볼 수 있다.

리틀 엔디안 방식으로 쓰여있으므로 제대로 읽으면 6160이다.

Hex dump에서는 16진수로 쓰여있으므로 6160을 10진수로 변환하여 입력해야하는 Serial 값을 찾는다.

 

 

계산기 프로그램을 열어 Hex 값 6160을 입력한다.

 

Dec로 변환하면 24928이라는 결과값이 나온다.

15.exe를 실행하여 Name에 CodeEngn, Serial에 24928을 입력하면 성공메시지가 뜬다.

 

 

 

 

 

<정답제출>

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

'CodeEngn' 카테고리의 다른 글

[CodeEngn] Basic RCE L16  (0) 2023.11.15
[CodeEngn] Basic RCE L14  (0) 2023.11.13
[CodeEngn] Basic RCE L13  (0) 2023.11.12
[CodeEngn] Basic RCE L12  (0) 2023.11.09
[CodeEngn] Basic RCE L11  (0) 2023.11.07