[Lecture] Format String Bug (FSB)
1. 포맷 스트링 버그 (Format String Bug, FSB) 포맷 스트링을 인자로 사용하는 함수는 대표적으로 scanf, fprintf, fscanf, sprintf, sscanf가 있다. 포맷 스트링을 채울 값들은 레지스터나, 스택에서 가져온다. 하지만, 포맷 스트링을 사용하는 함수의 내부에는 필요로 하는 인자 개수와 함수에 전달된 인자의 개수를 비교하는 루틴이 존재하지 않는다. 포맷 스트링을 사용자가 입력할 수 있을 때, 공격자는 레지스터와 스택을 읽을 수 있고, 임의 주소 읽기 및 쓰기를 할 수 있다. 포맷 스트링 함수를 잘못 사용하여, 발생하는 버그를 "포맷 스트링 버그"라고 한다. 2. 레지스터 및 스택 읽기 2-1. 실습 코드 사용자가 임의의 포맷 스트링을 입력할 수 있는 코드이다. s..