문제입니다.

실행시 화면입니다. 아무 반응이 없습니다.

name이 2글자라는 힌트를 주었으므로 name에 12를 넣어봤더니 위와 같은 문구가 출력됩니다.

패킹은 되어있지 않은 것 같습니다.

먼서 String 찾기로 성공문자열을 찾아보았습니다.

더블클릭하여 들어가보겠습니다.

이미 분석을 다하고 주석을 달아 놓았습니다.

45BBA4의 CALL결과에 따라 성공과 실패가 되므로 45BBA4가 분기점입니다.

name이 2글자이므로 글자수를 체크하는 곳으로 이동해보겠습니다.

이 곳이 글자수를 체크하는 곳으로 45BB24에서 글자수를 비교하게 됩니다.

45BB24부분의 코드에 CMP EAX,2 로 명령를 수정하여 우회 하겠습니다.

"12 / 5D88-53B4-52A87D27-1D0D-5B09"를 넣고 분기점까지 실행해보았습니다.

우리가 입력한 시리얼 이외에 EDX에 다른 시리얼이 적혀있습니다.

name 값에 따라 만들어 지는 시리얼인 것 같습니다.

45BB9B가 시리얼이 생성되는 곳이므로 들어가서 분석해보겠습니다.

쭉 실행하다보면 반복문이 나오는데 이 부분이 첫번째 시리얼 "2D7B-4701-2845A973-6FCA-B1AA" 중 "2D7B"을 만들어 내는 구간입니다.

루프를 다 돌고나면 ESI와 EDX에 0x2D7B9F20 이 저장되어 있습니다. 이중 앞4자리가 일치합니다.

다른 시리얼의 다른 부분도 루프를 다 돌고나면 브레이크 포인트 걸은 두 구간을 지나면서 "0x2D7B9F20" 중 앞 4글자인 "0x2D7B" 만 잘라 스택에 저장하게 됩니다.

시리얼의 4글자를 뽑는 과정을 파이썬으로 짜고 "5D88-53B4-52A87D27-1D0D-5B09"중 "5D88" 이 부분만 비교하면 시리얼에 해당하는 name을 찾을 수 있을 것 같습니다.

[파이썬 코드]

[결과]

name은 "C6"으로 나왔습니다.

그럼 name에 "C6"을 넣어보겠습니다.

"Well done!"이라는 MessageBox가 출력되었습니다.

문제에서는 MD5 대문자로 변경하여 인증하라고 했으므로

이제 인증을 하면!

Advance RCE L08 성공!

'WAR GAME > CodeEngn(Advance)' 카테고리의 다른 글

Advance RCE L10  (0) 2020.07.15
Advance RCE L09  (0) 2020.07.15
Advance RCE L07  (0) 2020.04.29
Advance RCE L06  (0) 2020.04.29
Advance RCE L05  (0) 2020.04.29

+ Recent posts