336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
5) 표준 입력 함수
▣ gets
- 함수 원형 : char * gets(char * buffer);
ex) gets(변수명);
- 기능 : 문자열을 입력받아 buffer에 넣는다. 개행문자는 버림.
#include <stdio.h> int main() { char string[10]; printf("Enter the string : "); gets(string); printf("input string : %s\n", string); return 0; }
- 실행화면
- BOF(Buffer Overflow)
☞ string 변수는 크기를 10으로 설정해뒀으므로 그보다 긴 길이의 문자열을 넣으면
에러메시지를 출력하며 프로그램을 종료한다. => 버그
☞ 그러나 종종 에러메시지를 출력하지 않고 프로그램이 이상동작을 하는 경우 => 분석 시작 및 해킹
☞ 가끔 어떤 pc에서는 입력 스트링을 "Enter the string"으로 넣는다면 종료되지 않고 계속해서
스트링을 무한 입력을 받는 경우가 발생한다. = 실행 흐름이 바뀜 (해킹)
☞ 왜?? 우연히 입력한 글자의 끝이 main 함수의 종료코드가 있는 메모리를 덮어버려서 무한 반복하게 됨.
☞ 이러한 버퍼오버플로우를 방지하기 위해서 현재는 _s가 달린 함수를 쓰도록 권장.
ex) gets_s(string, 10); // 10은 문자열의 길이
i2sec 대구지점 23기 수료생.
'해킹&보안 > C언어' 카테고리의 다른 글
[D+8] C언어 기초 (2) (0) | 2017.02.16 |
---|---|
[D+7] C언어 기초 (1) (0) | 2017.02.15 |
[D+5] C언어 소개 (4) (0) | 2017.02.13 |
[D+3] C언어 소개 (2) (0) | 2017.02.08 |
[D+2] C언어 소개 (1) (0) | 2017.02.07 |