Site/FTZ(27)
-
FTZ level14
이번시간에는 level14에 대하여 풀어보겠습니다 공부를 하는 입장이니 틀린게 있어도 양해부탁드리겠습니다 ls -al을 통해 전체목록을 확인해보니 이번에도 attackme라는 파일이 존재합니다 cat hint를 통해 hint내용을 보니 위같은 소스코드가 나와있습니다 보이는건 buf에 20bytes가 할당되어있는데 fgets함수를 통해 45bytes 입력받으면 버퍼오버플로우 취약점이 발생합니다 또 이번에는 check와 0xdeadbeef를 비교하여 일치하면 level15권한으로 바꿔주고 shell을 실행시켜주네요 접근방법은 check에다 0xdeadbeef만 넣어주면 권한을 얻을수있으니 buf와 check의 거리를 구해서 사이에 쓰레기값을 넣고 check의 위치에다가 0xdeadbeef를 넣어주어서 권한을..
2022.03.08 -
FTZ level13
이번시간에는 level13에 대하여 풀어보겠습니다 공부를 하는 입장이니 틀린게 있어도 양해부탁드리겠습니다 이번에도 먼저 전체 디렉토리와 파일을 확인해 보니 attackme파일이 이번에도 있습니다 cat hint를 통해 힌트파일 보니 c코드가 나와있습니다 여기서도 strcpy함수에서 buf에서 1024보다 큰값이 들어가면 버퍼오버플로우취약점이 발생합니다 그런데 전 level과 다르게 i값이 0x1234567이 아니면 프로그램을 강제종료시키는 조건이 있는데 이 부분은 버퍼오버플로우가 발생하는지 확인하는 역할을 하는것 같아서 나중에 페이로드를 작성할때 신경써주어야 될 것 같습니다 * iong형 변수 i에 0x123456 선언 char형 배열 buf에 1024byte 할당 level14의 id값 argc가 2이..
2022.03.07 -
FTZ level12
이번시간에는 level12에 대하여 풀어보겠습니다 공부를 하는 입장이니 틀린게 있어도 양해부탁드리겠습니다 전체 디렉포리와, 파일을 조회해보았습니다 level12이와 같이 attackme라는 있고 setuid가 걸려있는 것을 확인했습니다. attack파일을 실행 시켰더니 위와 같은 소스코드가 나옵니다 level11에서 언급했던거같이 strcpy처럼 get함수도 변수의 범위를 검사하지않아 저희가 256byte를 초과하여 입력하면 버퍼오버플로우가 발생할 가능성이 있을것 같습니다 아마 접근방식이 level11과 동일할것 같습니다 * char str[256] : char형 문자열을 256바이트만큼 할당함 setreuid(3092, 3092); -> level12의 권한id값임 printf : 출력 gets(str..
2022.03.06 -
FTZ level11
이번시간에는 level11에 대하여 풀어보겠습니다 공부를 하는 입장이니 틀린게 있어도 양해부탁드리겠습니다 먼저 ls-al을 입력하여 전체 파일, 디렉토리 목록을 확인했습니다 attackme라는파일에 setuid가 걸려있습니다 따라서 저희는 attackme라는 취약점을 이용해서 일시적으로 level12의 권한을 획득해야될 것 같습니다 cat을 통해 hint파일의 내용을 확인해 보았습니다 * char str[256]; -> char형 문자열을 256바이트만큼 할당함 setreuid(3092, 3092); -> level12의 권한id값임 strcpy(str, argv[1]) -> 사용자의 입력값을 str에 복사함 [취약점 -> 버퍼오버플로우발생함] print(str) -> str출력 * 일단 확실한것은 ar..
2022.03.04 -
FTZ level10
이번시간에는 level10에 대하여 풀어보겠습니다 공부를 하는 입장이니 틀린게 있어도 양해부탁드리겠습니다 cat hint를 통해 확인해보니 위화면처럼 뜹니다 공유메모리 ? * - 공유 메모리 : 여러 프로그램 간에 통신을 제공하거나 중복 복사본을 피하기 위해 여러 프로그램에서 동시에 액세스할 수 있는 메모리[메모리에는 명령어, 지역 변수, 동적 변수, 전역 변수와 같이 데이터가 존재하는데 그 프로세스만 접근할 수 있고 변경이 가능] - 필요 헤더파일 : #include #include - 관련된함수 shmget() : 공유메모리를 생성하거나 접근하기 위한 함수 shmget(ket_t key, size_t size, int shmflg) -> key_t key : 공유메모리를 할당할때 쓰는 고유의 key값..
2022.02.25 -
FTZ level9
이번시간에는 level9에 대하여 풀어보겠습니다 공부를 하는 입장이니 틀린게 있어도 양해부탁드리겠습니다 cat hint를 통해서 hint파일을 확인해 보았습니다 * main(){ 1. char buf2[10]; // char형 buf2 10바이트 할당 2. char buf[10]; // char형 buf 10바이트 할당 3. printf("It can be overflow : "); //문자출력 4. fgets(buf,40,stdin); //stdin을 통해 40바이트 크기의 입력받은 값을 buf에 넣어라 5. if ( strncmp(buf2, "go", 2) == 0 ) // buf2의 첫두글자 go이면 [strncmp에서 일치하면 0을 반환] { 6. printf("Good Skill!\n"); //..
2022.02.25