CTFZone 2018 - Validator3000 Writeup

Category: Writeup - Written on July 27, 2018

Problem

Program

실행하고 Check flag를 누르면 Bad flag 가 출력된다.

Program

디버거에서 실행할 경우에는 위와 같이 Checker module is not available 이 출력된다.



Analysis

내부적으로 Anti-Debugging 코드가 있는 것 같다.

Cheat Engine 6.8.1으로 Attach 까지는 디버거 인식을 못 하지만, Toggle BP를 걸면 인식한다.

사실 바이너리에 조금 이상한 부분이 있어서 (WinMain 보면 API로 Dialog 만드는데, Resource Directory에 Dialog, Menu 등이 있음;) 많이 헤맸던 것 같다.

내부 구조는 대충, VirtualAlloc으로 할당된 메모리 영역에 Resource Directory에 저장되어 있는 데이터를 읽어서 특정 복호화 작업을 진행하는 것 같았다.

Anti-Debugging에만 걸리지 않으면 메모리에서 flag를 확인할 수 있다.



Solution

  1. Cheat Engine으로 Attach 후 Check flag를 누른다.
  2. UTF-16 String Value Type으로 ctfzone 을 검색한다.



flag: ctfzone{R3Flec7i0n}


Comments