본문 바로가기

Reversing/CodeEngn

[CodeEngn] Advance RCE L08풀이

https://ch.codeengn.com/

 

CodeEngn.com [코드엔진]

코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 세미나, 워크숍을 현업 실무자들과 함께 운영하고 있는 비영리 커뮤니티입니다.

ch.codeengn.com


그림 1

5D88-53B4-52A87D27-1D0D-5B09 해당하는 NAME 값을 찾는 것이 문제였다.

 실행시켜서 아무 NAME 값을 입력하고 KEY 값을 입력해보았는데 Please Enter More Chars… 라는 문구가 떴다.

 

그림 2

Exeinfo로 확인해보았는데 패킹도 되어있지 않고 그냥 분석하면 될 것 같다.

그림 3

X32 디버거로 분석해보았다.

 

파일을 열어서 냅다 문자열 찾기를 하면 양도 너무 많고 찾을 수도 없다…

그래서 한번 실행을 시키고 다시 문자열 찾기를 진행하면 아래와 같이


keygenme #3~~ 라는 문자열을 볼 수 있는데, 실행파일을 실행시켰을 때 나오던 문구이다!

그림 4

 일단 해당 부분으로 이동해보았다.

 

그림 5

하나씩 실행시켜보니 위의 그림에서 45c76e에서 값을 입력하는 창이 출력되는 것을 확인하였다.

 

그런데 값을 입력해도 자꾸 그다음으로 넘어가지지 않고 먹통이길래,,, 올리로도 열어보고 아주 난리를 쳤는데,,, 내가 윗부분에 bp를 너무 많이 걸어둬서 거기에서 잡혀서 이동을 못하나 보다,,,

엄청 헤맸는데,,, bp는 필요한 부분에만 사용하자,,,

 

일단 나는 45c76e 내부로 들어가서 문자열 찾기를 다시 해보았다.

Basic 17번에서 그렇게 풀었길래 들어가면 맨 아랫부분에 우리가 위에서 보았던 please enter more chars를 만날 수 있다!!

 

그 윗부분에 bp를 걸고 확인해보았더니

이게 웬걸,, name이 3글자 이상이어야 넘어갈 수 있다고 한다… 2글자라며,,

괜찮다! 안된다고 하면 강제로 만들면 된다!!

 

그림 6

일단 여기는 넘어가야 하니 그림 6에서 박스 부분을 "cmp eax,2"로 변경하고 패치파일을 생성해주었다.

이제부터 패치된 파일로 이어서 분석하였다.

 

역시나 쓸모없는 bp는 다 없애주고 위의 에러문과 cmp 부분에만 하나씩 걸어주었더니 아주 잘 넘어간다..ㅎㅎ…


그리고 조금 더 아래에는 우리가 찾는 성공 flag가 보인다!

 

그림 7

F8로 한 줄씩 실행해주었다.

실행하다 보니 위의 파란 박스를 지나니 EBP-10에 내가 입력한 KEY값이 저장되고,

빨간 박스를 지나자 내가 입력한 NAME에 해당하는 KEY 값이 만들어지는 것을 볼 수 있었다.

 

해당 함수 내부로 들어가 보았다.

 

함수가 조금 길었는데 처음에는 하나씩 분석하기보다는 그래서 어디까지 계속 가는데?라는 마음으로 계속 실행시켜보았다.

그림 8

계속 실행시키다 보니 위의 위치 즈음에서 새로운 KEY로 보이는 값들이 만들어지기 시작하였다.

 

그래서 윗부분 연산을 확인해보니 아래 그림 9의 맨 윗 노드로 내가 입력한 NAME 값의 글자를 글자 씩 넣어가며 반복문을 돌고 결과값을 보여주고 있는 것을 알 수 있었다.

그림 9

 


해당 연산을 가지고 역연산 코드를 작성하여 NAME 값을 찾아내면 될 것 같다.

그림 10

코드는,,, 모르겠어서 다른 분들이 작성하신 걸 가지고 와서 따라 해 보았더니 C6이라는 값이 나왔고

 

그림 11

직접 입력해보니 WELL DONE!이라는 성공메시지가 출력되었다.

 

문제에서는 NAME값을 MD5 해시로 변환해서 인증하라고 했으므로 변환해주면 아래와 같은 값을 얻을 수 있다.

 

Flag { 7e8b9f5cab4a8fe24fad9fe4b7452702 }

'Reversing > CodeEngn' 카테고리의 다른 글

[CodeEngn] Advance RCE L10풀이  (0) 2021.11.13
[CodeEngn] Advance RCE L09풀이  (0) 2021.11.13
[CodeEngn] Advance RCE L07풀이  (0) 2021.11.13
[CodeEngn] Advance RCE L06풀이  (0) 2021.11.13
[CodeEngn] Advance RCE L05풀이  (0) 2021.11.13