FTZ FTZ Level 12 hint는 다음과 같다. 문자열을 프로그램 실행 인자에서 가져오던 것이 gets 함수로 바뀐 것을 빼면 Level 11과 별다른 점이 없다. 소스 코드를 다시 컴파일하고 gdb로 뜯어 보았다. <main+0>, <main+1>에서 스택의 기본 프레임을 만들고 <main+3>에서 0x108(264바이트)만큼의 공간을 할당하는 것을 볼 수 있다. Level 11과 배열 길이가 같기 때문에 스택 ... FTZsecurityFTZ FTZ Level 10 hint는 다음과 같다. 공유 메모리란, 다수의 프로세스에서 동시에 접근 가능한 메모리이다. C언어에는 이 공유 메모리를 생성하는 함수로 shmget이 있다. key_t는 공유 메모리를 구별하는 식별 번호이기 때문에 shmget을 이용할 수 있다. 먼저 ipcs 명령어를 통해 시스템에서 사용 중인 공유 메모리 세그먼트를 확인한다. 0x00001d6a라는 key가 있고, 이는 10진수로 변환하... FTZsecurityFTZ FTZ Level 19 그러므로 setreuid 함수까지 포함한 쉘코드를 사용해야 한다. <main+3>에서 스택에 0x28(40바이트)만큼의 공간을 할당하고 있다. <main+19>에서 [ebp-40]이 eax에 들어가고 있으므로 buf가 위치한 지점은 [ebp-40]이다. buf가 20바이트를 차지하므로 dummy는 20바이트라는 것을 알 수 있다. 인터넷에서 검색을 통해 알아낸 정보로는, setreuid 함수... FTZsecurityFTZ FTZ Level 18 해석이 어렵지만, 초반의 변수 선언 부분을 보면 이전까지와는 다르게 check가 string보다 나중에 선언되고 있기 때문에 check를 일반적인 방법으로 변조할 수 없다. 그러나 switch문의 default에서 count를 음수로 만든다면 string보다 앞에 있는 메모리에 접근할 수 있고, 결과적으로 check를 변조할 수 있게 된다. main 함수가 길기 때문에 첫 페이지 먼저 살펴 ... FTZsecurityFTZ FTZ level7 ssh를 통해 level7로 접속한다. hint 파일에서 알려준대로 일단 /bin/level7 을 실행 시켜보자. 아마도 위와 같은 에러 메시지가 나타날 것이다. level7의 경우 문제를 풀기 위해서는 /bin/wrong.txt 파일이 필요한데, 현재 인터넷에 풀려있는 대부분의 FTZ VMware 이미지 파일에는 해당 파일이 존재하지 않는다. 따라서 먼저 /bin/wrong.txt 파일을 ... hackingFTZpwnableFTZ FTZ Level 15 hint는 다음과 같다. 이번에는 check 변수가 포인터로 선언되었다. 포인터가 가지는 값은 특정한 주소가 가리키는 값이기 때문에 0xdeadbeef를 직접 넣으면 0xdeadbeef가 가리키는 값을 찾아가게 된다. 이 문제에서는 포인터에 들어간 주소가 가리키는 값이 0xdeadbeef가 되게 만들어야 하기 때문에 0xdeadbeef가 있는 주소를 넣는 방식으로 공격해야 한다. 포인터처럼 ... FTZsecurityFTZ
FTZ Level 12 hint는 다음과 같다. 문자열을 프로그램 실행 인자에서 가져오던 것이 gets 함수로 바뀐 것을 빼면 Level 11과 별다른 점이 없다. 소스 코드를 다시 컴파일하고 gdb로 뜯어 보았다. <main+0>, <main+1>에서 스택의 기본 프레임을 만들고 <main+3>에서 0x108(264바이트)만큼의 공간을 할당하는 것을 볼 수 있다. Level 11과 배열 길이가 같기 때문에 스택 ... FTZsecurityFTZ FTZ Level 10 hint는 다음과 같다. 공유 메모리란, 다수의 프로세스에서 동시에 접근 가능한 메모리이다. C언어에는 이 공유 메모리를 생성하는 함수로 shmget이 있다. key_t는 공유 메모리를 구별하는 식별 번호이기 때문에 shmget을 이용할 수 있다. 먼저 ipcs 명령어를 통해 시스템에서 사용 중인 공유 메모리 세그먼트를 확인한다. 0x00001d6a라는 key가 있고, 이는 10진수로 변환하... FTZsecurityFTZ FTZ Level 19 그러므로 setreuid 함수까지 포함한 쉘코드를 사용해야 한다. <main+3>에서 스택에 0x28(40바이트)만큼의 공간을 할당하고 있다. <main+19>에서 [ebp-40]이 eax에 들어가고 있으므로 buf가 위치한 지점은 [ebp-40]이다. buf가 20바이트를 차지하므로 dummy는 20바이트라는 것을 알 수 있다. 인터넷에서 검색을 통해 알아낸 정보로는, setreuid 함수... FTZsecurityFTZ FTZ Level 18 해석이 어렵지만, 초반의 변수 선언 부분을 보면 이전까지와는 다르게 check가 string보다 나중에 선언되고 있기 때문에 check를 일반적인 방법으로 변조할 수 없다. 그러나 switch문의 default에서 count를 음수로 만든다면 string보다 앞에 있는 메모리에 접근할 수 있고, 결과적으로 check를 변조할 수 있게 된다. main 함수가 길기 때문에 첫 페이지 먼저 살펴 ... FTZsecurityFTZ FTZ level7 ssh를 통해 level7로 접속한다. hint 파일에서 알려준대로 일단 /bin/level7 을 실행 시켜보자. 아마도 위와 같은 에러 메시지가 나타날 것이다. level7의 경우 문제를 풀기 위해서는 /bin/wrong.txt 파일이 필요한데, 현재 인터넷에 풀려있는 대부분의 FTZ VMware 이미지 파일에는 해당 파일이 존재하지 않는다. 따라서 먼저 /bin/wrong.txt 파일을 ... hackingFTZpwnableFTZ FTZ Level 15 hint는 다음과 같다. 이번에는 check 변수가 포인터로 선언되었다. 포인터가 가지는 값은 특정한 주소가 가리키는 값이기 때문에 0xdeadbeef를 직접 넣으면 0xdeadbeef가 가리키는 값을 찾아가게 된다. 이 문제에서는 포인터에 들어간 주소가 가리키는 값이 0xdeadbeef가 되게 만들어야 하기 때문에 0xdeadbeef가 있는 주소를 넣는 방식으로 공격해야 한다. 포인터처럼 ... FTZsecurityFTZ