Pwnable/FTZ

Pwnable/FTZ

FTZ - level12 [Buffer Overflow 𝜷]

LEVEL 12 [level12] passcode : it is like this (NO DRAG, NO PASSCODE) level11과 유사한 문제이다. 바로 힌트를 뜯어보자. level11과 버퍼의 크기도 같으므로 메모리 구조도 다음과 같을 것이다. 정확성을 위하여 gdb를 이용하여 프로그램을 살펴보자. original attackme는 gdb 권한이 거부되어 있으니 프로그램을 tmp로 복사하여 뜯어보자. 역시나 동일했다. 메모리 구조는 다음과 같다. 할당된 메모리 → (0x108 + 0x8) = 272 예상되는 메모리 구조 → str(256) + dummy(8) + SFP(4) + RET(4) = 272 따라서 똑같이 str의 주소를 구하고 NOP를 이용하여 쉘을 따면 될 것 같다. str의 시작..

Pwnable/FTZ

FTZ - level11 [Buffer Overflow 𝛼]

LEVEL 11 [level11] passcode : what!@#$? (NO DRAG, NO PASSCODE) attackme 라는 실행파일이 존재하나 level11의 권한에서는 실행과 읽기권한만 존재한다. 이제 hint를 살펴보자. 아마도 level11의 소스코드인 것 같다. 코드를 한번 분석해 보자. #include #include int main( int argc, char *argv[] ) { char str[256]; //256바이트의 배열 선언 setreuid( 3092, 3092 ); //level12 권한 부여 strcpy( str, argv[1] ); //str에 argv[1]를 복사 printf( str ); //문자열 str을 출력 } 여기서 str의 길이를 검사하는 코드가 존재하지..

Pwnable/FTZ

FTZ - level10 [Wiretapping]

LEVEL 10 [level10] passcode : interesting to hack! interesting to hack! (NO DRAG, NO PASSCODE) 이전까지의 레벨과는 다르게 program이란 디렉토리가 추가되었다. 그러나 program이라는 디렉토리는 접근 권한이 없다. hint를 살펴보았더니 공유 메모리를 사용하는 두 사람의 대화를 도청하여 level11의 권한을 얻는 문제이다. 공유 메모리에 대하여 알아야 할 것 같다. [ 공유 메모리 ] 원래는 프로세서가 사용하는 메모리 공간은 하나의 프로세스만이 사용할 수 있다. 다른 프로세스의 접근을 원하는 경우 최초의 공유 메모리 생성 프로세스가 커널에 공유 메모리 공간의 할당을 요청함으로써 이루어진다. 시스템 재부팅 및 공유 메모리 공..

Pwnable/FTZ

FTZ - level9 [Buffer Overflow]

LEVEL 9 [level9] passcode : break (NO DRAG, NO PASSCODE) hint를 살펴보니 버퍼 오버플로우에 관한 문제인 것 같다. 바로 코드를 살펴보자. #include #include #include main(){ char buf2[10]; //10바이트 크기의 buf2 선언 char buf[10]; //10바이트 크기의 buf 선언 printf("It can be overflow : "); fgets(buf,40,stdin); //buf라는 변수에 40개(NULL포함) 입력받음 if ( strncmp(buf2, "go", 2) == 0 ) //buf2의 처음 2개의 문자가 "go"와 일치한다면 { printf("Good Skill!\n"); setreuid( 3010,..

Lucvs
'Pwnable/FTZ' 카테고리의 글 목록 (3 Page)