Wargame/CodeEngn Basic RCE
-
lvl 20Wargame/CodeEngn Basic RCE 2019. 1. 9. 13:22
문제 Korean : 이 프로그램은 Key파일을 필요로 하는 프로그램이다. 위 문구가 출력되도록 하려면 crackme3.key 파일안의 데이터는 무엇이 되어야 하는가 Ex) 41424344454647 (정답이 여러개 있는 문제로 인증시 맞지 않다고 나올 경우 게시판에 비공개로 올려주시면 확인해드리겠습니다) 풀이 → 프로그램을 실행한다. 프로그램은 정상적으로 실행되나, 아무 기능이 동작하지 않는다. → IDA 도구를 이용하여, 디스어셈블하여 분석한다. → 문제에서 CRACKME3.KEY 파일을 필요로 한다고 나타났으며, 프로그램 시작과 동시에 CreateFileA 함수를 이용하여 해당 파일을 언급하는 것을 확인할 수 있다. → 사실 함수명에 의하면, 파일을 생성하는 줄 알았지만, dwCreationDisp..
-
lvl 19Wargame/CodeEngn Basic RCE 2019. 1. 9. 12:59
문제 이 프로그램은 몇 밀리세컨드 후에 종료 되는가 풀이 → 프로그램을 실행한다. 다음과 같은 메시지 창이 나타나고 일정시간이 흐른 후 자동으로 종료된다. → PEiD 도구로 확인한 결과, UPX로 패킹된 것을 확인할 수 있다. → UPX를 언패킹한다. → IDA 도구를 이용하여 디스어셈블하여 String을 살펴본 결과, 다음과 같은 String을 확인할 수 있다. → AutoIt script로 컴파일된 것으로 추측가능하며, 구글링 검색을 통해 Autoit decompiler 를 찾아 다운받는다. → 다운받은 후, 디컴파일하면 MsgBox 함수를 사용하는 스크립트를 확인할 수 있다. → AutoIt script의 MsgBox 함수를 찾아보면 다음과 같다. → timeout 파라미터가 존재하였으며, 종료되..
-
lvl 18Wargame/CodeEngn Basic RCE 2019. 1. 7. 13:32
문제 Name이 CodeEngn일때 Serial은 무엇인가 풀이 → 프로그램을 실행한다. 아래와 같이 Name 값과 Key 값을 동시에 입력받은 후 확인하는 문제이다. → Name에 "CodeEngn" Serial에 "1234"를 입력한 후, 체크를 하면 잘못된 시리얼 번호라는 메시지가 나타난다. → 디스어셈블한 후, 분석한 결과 아래와 같은 문자열 비교 함수에서 시리얼 값을 체크하는 것으로 판단된다. 따라서, 해당 함수에 bp를 설정한 후, 디버깅을 시도한다. → 디버깅 시 사용자 입력 값은, Name 변수에는 "CodeEngn"을 Serial 변수에는 "1234"를 입력한다. → lstrcmpiA 함수에 전달되는 인자가 String1, String2가 있으며, String1 변수에는 사용자가 입력한 ..
-
lvl 17Wargame/CodeEngn Basic RCE 2019. 1. 6. 23:53
문제 Key 값이 BEDA-2F56-BC4F4368-8A71-870B 일때 Name은 무엇인가 힌트 : Name은 한자리인데.. 알파벳일수도 있고 숫자일수도 있고.. 정답인증은 Name의 MD5 해쉬값(대문자) 풀이 → 프로그램을 실행한다. 아래와 같이 Name 값과 Key 값을 동시에 입력받은 후 확인하는 문제이다. → 바이너리를 디스어셈블한 결과, 아래와 같은 성공 분기를 확인할 수 있다. LStrCmp 함수에서 Cmp 하는 것을 확인할 수 있다. → 해당 함수 내부에서 cmp 처리된 후, 성공 분기 명령어인 jnz short loc_45BBC5가 실행되므로, LStrCmp 함수를 Trace 하여, 해당 함수 내부의 모든 cmp 명령어에 bp를 설정한 후, 디버깅을 시도한다. → 사용자 입력 값은, ..