-榮-

[CodeEngn] Basic RCE L06 본문

CodeEngn/Basic

[CodeEngn] Basic RCE L06

xii.xxv 2021. 3. 21. 22:00

 

● CodeEngn Basic RCE L06 문제

 

CodeEngn Basic RCE L06

 

 

◎ 파일 실행 화면

 

[그림 1] 파일 실행 화면 및 실패 화면(입력 Serial 값 : abcd)

 

Unpack을 한 후 "Wrong serial!!!" 문자열을 찾고, 분기점을 찾아 Serial 값을 찾으면 될 것 같습니다.

 

 

패킹 및 난독화 여부 확인

 

[그림 2] PEiD - UPX 패킹 확인

 

 


 

● CodeEngn Basic RCE L06 풀이

[그림 3] UPX Unpacked

 

언패킹을 한 뒤 디버거에 올리면 OEP(00401360)가 띄워지는 것을 확인할 수 있습니다.

 

[그림 4] 디버거 - OllyDbg / 디버기 - 06.exe (Basic RCE L06 실행파일)

 

앞에서 추측한 "Wrong serial!!!" 문자열을 찾아봅시다.

 

[그림 5] 실패 MessageBox의 문자열 확인


실패 문자열 위치로 이동하면, 위에 성공 MessageBox로 추측되는 Code가 있습니다.

 

[그림 6] 실패 MessageBox 위치

 

성공 MessageBox로 추측되는 Code로 이동하면, 더 위에 Serial로 추측되는 값과 분기점을 확인할 수 있습니다.

 

[그림 7] 분기점 및 Serial 추정 키 확인

 

 

해당 지점까지 실행하여 입력받은 문자열과 "AD46DFS547"을 비교하여 분기가 나뉘는지 확인합니다.

 

[그림 8] 입력 값과 "AD46DFS547"

[그림 8]을 보면, 입력 값과 "AD46DFS547"값을 파라미터로 사용하여 [CALL 00401290]에서 Serial 키가 같은지 비교한 후 JNZ 명령어로 분기 이동하는 것을 알 수 있습니다.

 


● CodeEngn Basic RCE L06 확인

 

[그림 9] Serial Success

 

CodeEngn Basic RCE L06의 답은 OEP+Serial = 00401360AD46DFS547