Site/FTZ(27)
-
FTZ level20
이번시간에는 level20에 대하여 풀어보겠습니다 공부를 하는 입장이니 틀린게 있어도 양해부탁드리겠습니다 전체 디렉토리와 파일목록을 확인하니 attackme가 있습니다 힌트파일을 열어주었더닌 소스코드를 확인했습니다 * chat형 blesh배열 20bytes할당 setreuid = level 20 id fgets함수로 79bytes의 입력값을 bleh에 할당 printf로 bleh 출력 * 여기서 이상한점이 bleh버퍼가 80bytes로 선언이 되어있는데 입력을 79bytes 제한을 해버려서 버퍼오버플로우로 이용해서 ret까지 덮어 쓸 수 없을 것 같습니다... 하지만 printf(bleh)부분에서 포맷스트링버그가 발생한다고 합니다 * 포맷스트링버그 : 검사되지않은 사용자입력을 포맷스트링으로 입력하여 %s..
2022.03.13 -
FTZ level19
이번시간에는 level19에 대하여 풀어보겠습니다 공부를 하는 입장이니 틀린게 있어도 양해부탁드리겠습니다 먼저 ls -al을 입력하여 디렉토리과 파일 목록을 확인해보았고 이번에도 attackme 파일이 있네요 hint파일을 열어주었는데 저번레벨보다 상당히 짧은 코드가 있습니다 char 형 buf에 20bytes를 할당하고 gets함수를 통해 buf를 입력받습니다 -> 버퍼오버플로우 취약점발생 그리고 printf함수로 buf를 출력해줍니다 기존것과 다른점은 setreuid를 실행시켜주는 어떠한 것도 없네요 쉘코드를 이용해서 접근을 해야될 것 같습니다 gdb를 통해 attackme를 실행시켜줍니다 main+3에서 40bytes[0x28] 공간을 확보해주는데 위에서 선언한 buf는 20bytes이므로 남은 2..
2022.03.10 -
FTZ level18
이번시간에는 level18에 대하여 풀어보겠습니다 공부를 하는 입장이니 틀린게 있어도 양해부탁드리겠습니다 먼저 ls -al을 통해 전체 디렉토리와 파일을 확인해보니 attackme가 보입니다 힌트파일을 열어주었는데 못보던 코드도 보이고 힌트가 역대급으로 기네요... 다는 모르겠어서 중요한 부분만 분석해보겠습니다 char형 stirng에 100bytes할당 int형 check변수 선언, int형 x 0으로 초기화, int형 count 0으로 초기화, fd_set의 구조체 fds선언(구글링) printf("Enter your command") 출력, 출력버퍼를 fflush로 청소(구글링) while무한루프돌려주며 count가 100이상이면 printf출력, check가 0xdeadbeef면 shellout(..
2022.03.10 -
FTZ level17
이번시간에는 level17에 대하여 풀어보겠습니다 공부를 하는 입장이니 틀린게 있어도 양해부탁드리겠습니다 먼저 ls -al을 입력하여 전체 디렉토리와 파일확인해 보니 attackme라는 파일이 또 있네요 힌트파일을 열어주었습니다 int형 crap변수선언했고 포인터형함수call()로 printit()을 받고있네요 char형 buf에 20bytes 할당해주고 fgets함수로 48bytes만큼 buf에 할당해줍니다[버퍼오버플로우발생] level18 ID를 얻을수있는setreuid가 있고 call함수로 호출합니다 이번에는 shell을 실행시켜주는 함수가 없습니다 call함수를 부르고 프로그램을 종료시키기 때문에 현재상태에서는 setreuid에 접근할수가 없겠네요... 이번에는 저번과 다르게 환경변수에 쉘코드를 ..
2022.03.09 -
FTZ level16
이번시간에는 level16에 대하여 풀어보겠습니다 공부를 하는 입장이니 틀린게 있어도 양해부탁드리겠습니다 ls -al을 명령하여 전체 디렉토리와 파일목록을 확인해 보니 이번에도 attackme파일이보이네요 힌트 파일 내용을 보니 함수들도 보이고 포인터함수도 보이네요... 한번 분석을 해보겠습니다 - int형 crap변수선언 - void형 함수포인터 call()선언 (printit 참조함) - char형 buf배열에 20bytes할당 -fgets함수로 48bytes만큼 입력받아 buf에 전달 -> 버퍼오버플로우 취약점발생 - call() 함수호출 -> printit()호출 -shell()에서는 setreuid가 있으므로 level17의 권한이 있음 -printit()에서는 Hello there 출력 이번에..
2022.03.09 -
FTZ level15
이번시간에는 level15에 대하여 풀어보겠습니다 공부를 하는 입장이니 틀린게 있어도 양해부탁드리겠습니다 ls -al을 명령하여 전체 디렉토리와 파일목록을 확인해 보니 이번에도 attackme파일이 있네요 hint파일 열어보니 level14코드와 상당히 비슷하네요 * int형 crap선언 int형포인터 check선언 char형 buf배열에 20bytes할당 fgets함수를 통해서 buf에 문자열 45bytes 만큼 입력받음 포인터 check가 가리키는 주소값이 0xdeadbeef 주소값과 같으면 level15 id /bin/sh 실행 * 이번에 다른점은 check를 char형 포인터 변수로 선언한것입니다 포인터는 주소값을 가리키므로 결국 저 0xdeadbeaf의 주소값을 알아내서 check자리에 넣어주면..
2022.03.09