Wargame36

[FTZ]level12 level11부터는 공격코드도 작성해야하네요!! 딱 봐도 gets라는 취약한 함수가 눈에 띄네요!! level11과 비슷한 문제같은데 입력을 main함수의 인자로 받는 것이 아니고 프로그램 내에서 받고 있네요. level11과 비스무리하지만 아래를 살펴보면 main+56에서 gets가 eax의 주소에 입력을 하고 있으며 eax는 ebp-264를 의미하네요. main+79라인에서 보면 eax가 가리키는 곳을 출력하고 있네요. 종합해보면 입력받은 내용을 출력하지요. main+79에 브레이크포인트를 걸고 실행해 봅시다. 문장을 입력하라니.. "aaaa" 이 후 eax가 가리키는 곳의 문자열을 출력해보면 "aaaa" 즉, 입력한 것이 출력되네요. 대략 그려보면 str[256] + dummy[8] + SFP[4].. 2019. 9. 7.
[FTZ]level11 시작이 반이고..? level1~level10까지 절반했으면? 끝나야 하는건데.. level11.. 시작해 볼까요?ㅎㅎ level11.. 소스를 보면 256byte 배열을 선언한 후 setreuid()를 이용해 다음레벨의 권한으로 설정합니다. 이후 strcpy()함수가 main함수에서 인자를 입력받아서 배열에 저장할 때 복사할 문자열의 길이를 검증하지 않는 점에서 bof 취약점이 발생할 것으로 보입니다. 엇? 뒤에 보니 printf()도 포맷스트링과 인자를 사용하지 않고 직접 변수를 넣었네요? 이 경우에 Format String Bug 취약점이 발생합니다. Buffer Overflow str이 스택 내에 있기 때문에 아마도 스택오버플로우가 되겠네요. 우선 main+3 주소를 보면 배열의 크기는 0x100.. 2019. 9. 7.
[FTZ]level10 와ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ 이제 level10만 해결하면 50%네요. 뒤에꺼 해결하는데는 더 오래걸리겠죠? 공유메모리를 이용한다...?! shmget 함수의 원형 int shmget(key_t key, size_t size, int shmflg); key_t key : 공유메모리의 키 값, 정수로 입력 가능, IPC_PRIVATE로 인자를 가지면 개인공유메모리 생성가능 size_t size : 생성하려는 공유메모리 크기 int shmflg : 공유메모리의 flg값으로 공유메모리의 권한, 생성 시 옵션 부여. shmat 함수의 원형 void* shmat(int smId, const void* shm_addr, int flag); int smId : 공유메모리 식별자 const void* shm_addr : 공.. 2019. 9. 5.
[FTZ]level9 50%가 눈앞에 보이네요!! 조금 더 달려봅시다. 이런거 보면 바로 확인해보고 싶지 않나요? 따라서 'a'로 10바이트를 채우고 2바이트는 "go"로 채우려고 합니다. 아무런 반응이 없네요? 보면 fgets(eax, 0x0804856a, 40); 이고 eax는 ebp에서 40바이트 만큼 떨어져 있네요!! 'A'를 19개 입력하였습니다. 원래는 20개를 입력하려고 했으나 하나가 빠졌네요.. 그리고 [그림3]에서 보면 strncpy(eax, 0x084856a, 2); 이고 eax는 ebp에서 24만큼 떨어져 있네요. 0x084856a = "go" [ebp-24] = "AAA" 네요. 40-24 = 16이므로 16바이트 뒤에 2바이트만큼만 "go"로 적으면 될 것 같지 않나요? fgets가 40바이트만큼 입력.. 2019. 9. 5.
[FTZ]level8 접속 후 힌트를 먼저 볼까요? level9 소유의 size가 2700인 파일이 있나봅니다. find 명령어.. 잘 모르는 만큼 찾아보려고 합니다. 대강보니 bckw 잘은 모르겠으나 하나씩 적어보려고 합니다. found.txt파일이 눈에 띄네요. 열어보겠습니다. found.txt는 shadow파일의 형식을 가지고 있네요. John the ripper를 이용해 크랙해봅시다!! 먼저 shadow 파일을 만들어 줍니다. Level9 password is "apple". 2019. 9. 5.
[FTZ]level7 level6은 생각보다 간단하게 끝났네요!! level7을 시작해 볼까요? 실행시켜 볼까요? 딱봐도 -와 _이므로 0과 1로 보이네요. Level8 password is "break the world". 2019. 9. 5.
[FTZ]level6 25%를 돌파했네요!! 접속하자마자 ?? 접속하자마자 어떤 프로그램이 실행된 것 같은데.. 나가기위해 [Ctrl+C]를 누르자 level6이 되었습니다. 보자마자 있는 패스워드파일을 확인하자 바로 나오네요..? Level7 password is "come together". 2019. 9. 5.
[FTZ]level5 현재 level5.. 언제쯤 level20의 성인이 될 수 있을까요? 시작해볼까요? 힌트를 보니 /usr/bin/level5 라는 프로그램이 /tmp디렉터리에 level5.tmp라는 이름의 임시파일을 생성한다고 합니다. 그럼 /usr/bin/level5를 실행해서 임시파일을 생성해 볼까요? /tmp에는 level5.tmp가 생성되지 않습니다. 읽기권한이 없어서 안되는 것으로 보입니다. 일단 파일명을 알려줬으니 그 파일명으로 빈파일을 만들어 볼까요? touch 명령어로 빈파일을 만든 후 확인해보니 31바이트만큼 내용이 있네요? Level6 Password is "what the hell". 다음으로 넘어가 볼까요? 2019. 9. 5.
[FTZ]level4 어느덧 4번째네요. 와... backdoor라는 어마무시한 것을 /etc/xinetd.d에 꼼쳐놨네요..? 뉴규야!! 시작해 봅시다. 먼저 xinetd가 무엇일까요? 인터넷 슈퍼 데몬이라고 부르고 서비스를 관리해주는 프로그램이라고 읽습니다. 보통 Standalone방식으로 자신이 직접 서비스를 관리할 수도 있지만 항상 메모리에 상주해 있으므로 속도는 빠르지만 시스템에 부하를 줄 가능성이 있지요. 그래서 xinetd를 사용합니다. 조금 풀어서 설명하면 여러분들은 시골에서 장사할 때 사람이 하루에 한 두명 올까말까하는데.. 24시간 대기하려면 어떨까요? [Standalone방식] 이런 비효율이 따로 없지요. 그래서 과일가게, 야채가게, 슈퍼마켓 등에서 통합적으로 손님이 오면 문자가 오도록 설정해 놓으면 좋겠.. 2019. 9. 4.
[FTZ]level3 아직도 3살.. 걸음마 떼기도 힘드네요. 20살이 되려면... 시작해 볼까요? 먼저 C소스에 대한 설명부터 볼까요? 10라인 : 인자를 1개 입력해주어야 합니다. 16라인부터 strcpy, strcat, system을 한 번에 적어보면 system("dig @ 'argv[1]' version.bind chaos txt"); 이렇게 되네요? 저는 dig를 몰라서 검색해보니 도메인네임서버에 대한 질의응답이 가능한지 확인하는 명령어라네요. 아래 힌트를 볼까요? WoW!! 힌트가 2개나 있네요? 1) 리눅스에서 다중명령어를 사용하기 위한 방법은? 1. 세미콜론 ls; pwd; 위와 같이 명령어 2개를 동시에 실행이 가능합니다. 웹에서 보통 command injection할 때 주소창이나 검색창이 1줄밖에 되지 .. 2019. 9. 3.
[FTZ]level2 level2계정으로 접속을 했으면 확인을 해봅시다. 텍스트 파일 편집기라... Windows 사용자가 메모장을 알고있다면 Linux 사용자는 vi나 gedit정도는 알고 있겠죠? shell을 실행시킬 수 있다..? 그러면 level1과 동일하게 SetUID가 적용된 편집기에서 shell을 실행시키면 level3의 권한으로 실행되겠네요!!! 벌써 다 푼 것 같지만 찾았으면 열어봅시다. 누가봐도 vi editor네요?? 아 맞다 vi editor의 명령모드에서 shell로 잠시 빠져나갈 수 있죠? :sh 실행해 줍시다. 참고로 :!id와 같이 느낌표를 치고 명령어를 실행할 수 도 있습니다. editor이 답답한지 터미널에 바람쎄러 나왔습니다. 나는 누구일까요? level3입니다. 그 전에 우리가 아는 vim.. 2019. 9. 3.
[FTZ] level1 시작해볼까요? ID : level1, PW : level1로 접속을 합니다. 접속하자마자 어떤파일이 있는지 확인합니다. 궁금증을 유발하는 hint파일이 있네요? 궁금하니 열어봅니다. level2 권한에 setuid가 걸린 파일을 찾는다?? SetUID란? 다른 사용자가 파일을 실행시켰을 경우 실행되는 동안에는 파일의 소유자 권한으로 실행됩니다. 접근권한에서 4000을 사용합니다. 파일을 찾아볼까요? find 명령어 1) -name 옵션 ▶ 파일의 이름으로 검색 2) -type 옵션 ▶ 파일의 타입으로 검색 3) -user 옵션 ▶ 사용자가 소유한 모든 파일을 검색 4) -perm 옵션 ▶ 지정한 접근권한과 일치하는 파일 검색 여기서 사용한 명령어는? $ find / -user level1 -perm +4.. 2019. 9. 3.