Wargame
-
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를 설정한 후, 디버깅을 시도한다. → 사용자 입력 값은, ..
-
lvl 03Wargame/HackerSchool FTZ 2019. 1. 5. 07:13
→ level 3 계정 로그인 후, hint 파일을 살펴본다. → 힌트를 정리하자면, 3가지이다. - autodig 프로그램 소스 - "dig @[사용자 입력값] version.bind chaos txt"의 명령어를 수행하는 프로그램이다. (system 함수)- 동시에 여러 명령어 사용법 - 동시에 여러 명령어를 수행하는법은 리눅스에선 | (버티컬 바)와, ;(세미콜론) 정도로 알고있다.- 문자열 형태로 명령어 전달법 - 문자열 형태로 명령어 전달? 이건 아마 "(더블쿼터로) 묶는 걸 추측한다. → dig 명령어 사용법 및 옵션에 대한 조사를 진행한다. → 현재, 사용자 입력 값에 의해 실행되는 명령어는 dig @[입력 값] version.bind chaos txt 이므로, 입력 값 부분의 페이로드를 통..