All
-
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 이므로, 입력 값 부분의 페이로드를 통..
-
lvl 16Wargame/CodeEngn Basic RCE 2019. 1. 4. 15:34
문제 Name이 CodeEngn일때 Serial을 구하시오 풀이 → 프로그램을 실행한다. Name 값을 "CodeEngn" 값을 입력한 후 비밀번호는 임의의 값 "1234"를 입력한 후 확인한다. → PEiD 도구를 이용하여 프로그램을 확인한 결과, "Dev-C++4.9.9.2" 인 것을 확인할 수 있다. → IDA 도구를 이용하여 디스어셈블한다. 메인함수를 쉽게 찾을 수 있으며 분석을 진행한다. → 문제를 풀기 위해선 비밀번호를 입력받은 후 성공/실패 메시지를 출력하는 분기부터 집중적으로 봐야하는 것을 추측할 수 있다. 따라서, 해당 부분의 코드를 찾은 후 bp를 설정한다. → 디버깅을 시작한 후, Name에 "CodeEngn" 값을 입력하고 비밀번호는 임의의 값 "1234"를 입력하여 진행한다. cm..
-
lvl 15Wargame/CodeEngn Basic RCE 2019. 1. 3. 17:33
문제 Name이 CodeEngn일때 Serial을 구하시오 풀이 → 프로그램을 실행한다. → PEiD 도구로 프로그램을 살펴본 결과, Delphi 프로그램으로 확인된다. → IDA 도구를 이용하여 디컴파일한 결과, Check it 버튼 시 실행되는 것으로 추측되는 함수를 찾을 수 있다. 따라서, 적절한 명령어에 bp를 설정한다. (함수명:_TForm1_Button1Click) → 디버깅을 진행하면, cmp eax, ds:dword_45B844 명령어에서 break되며, 이 때의 레지스터 값을 살펴본다. 여기서 사용자 입력 값과, 명령어 그리고 레지스터 값들의 관계를 분석하면서 진행한다. → 디버깅 시, 사용자 입력 값은 문제에서 주어진 값인 "CodeEngn" 값을 입력하고, 시리얼 값은 임의의 값인 "..