상세 컨텐츠

본문 제목

[Write-up] CodeEngn Basic RCE 17

Reversing Write-Up/02.CodeEngn Basic

by RACC8N 2020. 1. 20. 16:23

본문

문제 : Key 값이 BEDA-2F56-BC4F4368-8A71-870B 일때 Name은 무엇인가


힌트 : Name은 한자리인데.. 알파벳일수도 있고 숫자일수도 있고..

 

풀이 : 

프로그램을 실행시킨 모습이다.

 

Name에 한글자를 입력했을 경우 더 많은 입력을 해달라고 한다.

 

디버거를 켜보자.

 

문자열 검색을 통해 해당 위치로 가봤더니, cmp eax, 0x3 명령어를 볼 수 있었다.

 

이부분을 바꿔 Name에 1개가 들어가도록 만들자.

 

그리고 밑으로 내려가보면 Key를 만드는 함수를 찾을 수 있다. 

 

이 함수를 분석해보자. Name에 A를 입력하겠다.

 

다음과 같은 연산을 수행한다. 

 

첫번째 로직 연산 결과이다. FFE37AF0 

 

이와같이 밑에 4개 총 5가지의 로직을 통해 Key값을 만들게 된다.

 

키값이 완성되면 FFE3-2C73-0502A34C-8A48-E1CB와 같은 모습이 나타나는데

 

이는 각 로직에서 앞에 4자리, 8자리만 뽑아서 만든 것이다.

 

첫번째로직 결과를보면 FFE37AF0인데, Key값의 맨처음 4자리를 보면 FFE3으로 같은것을 알 수 있다.

 

따라서 Key값 BEDA-2F56-BC4F4368-8A71-870B인 Name 1자리를 맞추기 위해선 첫번째 로직 결과가 BEDA로 시작하는 문자를 찾으면 된다.

 

간단한 프로그램을 만들어 보았다.

 

ASCII 코드로 알파벳 F인 70이 시작이 beda임을 알 수 있다.

 

관련글 더보기

댓글 영역