본문 바로가기

CodeEngn

[CodeEngn] Basic RCE L06

<문제>

 

<풀이>

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

 

06.exe를 실행해본다.

 

값을 입력하는 창이 뜬다.

 

임의의 값을 입력하고 Check Serial 버튼을 클릭해본다.

 

Wrong serial!!! 이라는 메시지 박스가 뜬다.

올바른 serial 값을 입력하면 성공 메시지 박스가 뜰 것으로 예상할 수 있다.

 

 

 

 

이제 본격적인 리버싱을 하기 위해서 06.exe디버거로 뜯어볼 것이다.

문제에서 언패킹을 하라는 것을 보면 해당 실행파일이 패킹되어있는 것 같다.

어떻게 패킹되어 있는지 확인하기 위해 PE(Portable Executable) 파일용 정적분석 툴인 PEiD를 이용해 파일을 열어보았다.

UPX로 패킹된 것을 확인할 수 있다.

 

UPX 언패킹 툴인 upx303w를 이용해 언패킹한다.

upx303w.zip
0.31MB

 

위의 파일을 다운로드하고 압축을 푼 뒤

해당 폴더 안으로 언패킹할 파일인 06.exe를 옮겨놓는다.

 

해당 폴더 경로에서 cmd창을 열고

upx -d 언패킹할파일

명령어를 입력한다.

 

 

이제 폴더 안에 옮겨놓았던 06.exe는 언패킹되었다.

디버거를 이용해 파일을 연다.

 

 

 

문제에서 정답인증은 OEP + Serial 형식으로 하라고 했다.

OEPOriginal Entry Point의 약자로 프로그램의 시작부분 주소를 말한다.

시작부분의 주소가 00401360인 것을 확인해둔다.

 

 

 

이제 serial를 찾기 위해 코드를 살펴볼 것이다.

입력값을 특정 문자열인 serial과 비교하는 알고리즘일 것으로 예상하고 어떤 특정한 문자열을 찾아본다.

코드창에서 우클릭 후 Search for > All referenced text strings 를 클릭한다.

 

디버깅 도구에서 참조하는 모든 텍스트 문자열 목록이 출력되었다.

 

문자열 목록들 중에서 "AD46DFX547" 이라는 문자열이 의심된다.

 

 

 

다시 06.exe를 실행하여 해당 문자열을 입력해본다.

 

성공 메시지 박스가 뜬다.

 

 

 

 

<정답제출>

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

'CodeEngn' 카테고리의 다른 글

[CodeEngn] Basic RCE L08  (0) 2023.11.02
[CodeEngn] Basic RCE L07  (0) 2023.11.02
[CodeEngn] Basic RCE L05  (0) 2023.09.23
[CodeEngn] Basic RCE L04  (0) 2023.09.23
[CodeEngn] Basic RCE L03  (0) 2023.09.23