본문 바로가기

Reversing/CodeEngn

[CodeEngn] Basic RCE L18풀이

https://ch.codeengn.com/

 

CodeEngn.com [코드엔진]

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

ch.codeengn.com


그림 1

Name이 CodeEngn일 때의 Serial 값을 구하는 것이 문제이다.

파일을 실행시켜서 CodeEngn과 아무 serial 값을 입력해보았다.

 

그림 2

 

Serial이 틀렸다는 문구가 출력되었다.

일단 exeinfo를 통해 패킹 여부 등을 확인해보았다.

 

그림 3

결과 알 수 없는 실행파일이라고 뜨는데 잘 실행이 되기도 하고 별 문제가 없어 보였다.

X32 디버거로 열어주었다.

 

문자열 찾기를 통해 성공 플래그가 있는 것 같은 부분으로 이동해주었다.

 

그림 4
그림 5

흐름을 보니, 위의 그림의 회색 줄의 함수에서 문자열을 비교하고 그 아래 아래 줄의 je에서 Good로 갈지 Bad로(위의 그림에서는 Bad라고 되어있지 않은데, 실행시키면 Bad라고 뜬다) 갈지 정해지는 것을 알 수 있다.

 

즉, 우리는 위의 call 함수에서 어떤 리턴 값이 발생하는지 알면 된다.

 

일단 call 함수에 BP를 걸고 Name은 CodeEngn, Serial은 21312324라는 랜덤 값을 넣어주었다.

 

그림 6

BP가 걸린 함수 위에서 06162370056B6AC0이라는 값과 내가 입력한 Serial 값을 불러와서 비교한 후 점프를 취하고 있다.

 

해당 부분이 CodeEngn이라는 Name에 대한 serial 값임을 예측할 수 있고, 디버거를 재실행해서 serial 값에 06162370056B6AC0 값을 넣어주었다.

 

그림 7

넣고 F8로 한 줄씩 실행해보니 je에서 Good 노드로 점프하는 것을 알 수 있으며, 즉 CodeEngn에 해당하는 serial 값이 06162370056B6AC0 임을 알 수 있다.

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

[CodeEngn] Basic RCE L20풀이  (0) 2021.09.13
[CodeEngn] Basic RCE L19풀이  (0) 2021.09.13
[CodeEngn] Basic RCE L17풀이  (0) 2021.09.13
[CodeEngn] Basic RCE L16풀이  (0) 2021.09.13
[CodeEngn] Basic RCE L15풀이  (0) 2021.09.13