Hacking & Security/System Hacking32 [DreamHack] Stage11 함께 실습 보호되어 있는 글 입니다. 2022. 5. 7. [DreamHack] Stage 10 : 혼자 실습 (Format String Bug ) 보호되어 있는 글 입니다. 2022. 4. 6. [DreamHack] Stage 10 : 함께실습(Format String Bug ) 이론에서는 사용자의 입력을 포맷 스트링으로 사용하면 포맷 스트링 버그가 발생할 수 있음을 알아봤다. 그리고 이를 통해 임의 주소 읽기 및 임의 주소 쓰기가 가능했다. 이번 함께 실습에서는 아래의 코드를 이용해 changeme의 값을 1337로 바꾸는 것이다. 아래는 해당 코드이다. // Name: fsb_overwrite.c // Compile: gcc -o fsb_overwrite fsb_overwrite.c #include #include #include void get_string(char *buf, size_t size) { ssize_t i = read(0, buf, size); if (i == -1) { perror("read"); exit(1); } if (i .. 2022. 4. 6. [DreamHack] Stage 10 : Format String Bug 이론 C언어에는 포맷 스트링을 이용해 다양한 형태로 값을 출력한다 printf 함수를 이용해서. C언어에는 printf 외에도 포맷 스트링을 인자로 사용하는 함수들이 많다. 더 추가하면 scanf , fprintf,, fscanf, sprintf, sscanf가 있다. f로 끝나는 이유는 formatted이고, 문자열을 다루는 함수면 포멧 스트링을 처리할 것이다. 위의 함수들은 포멧 스트링을 채울 값들을 레지스터나 스택에서 가져온다. 이 함수들은 내부에 포멧 스티링이 필요로 하는 인자의 개수와 함수에 전달된 인자의 개수를 비교하는 루틴이 없다 그래서 사용자가 포멧 스트링을 입력할 수 있으면 악의적으로 다수의 인자를 요청하여 레지스터나 스택의 값을 읽어낼 수 있다. 심지어 다양한 형식지정자를 활용하여 원하는 스.. 2022. 4. 6. [DreamHack] Stage 9 : 혼자실습(Out of bounds) 보호되어 있는 글 입니다. 2022. 4. 6. [DreamHack] Stage 9 : Out of bounds 이론 보호되어 있는 글 입니다. 2022. 4. 6. 이전 1 2 3 4 ··· 6 다음