포맷 스트링(Format String)이란 일반적으로 사용자로부터 입력을 받아들이거나 결과를 출력하기 위하여 사용하는 형식이다. 버퍼 오버플로와 다르게 데이터 형태에 대한 불명확한 정의로 인한 문제이다. C언어에서 보면 printf()라는 함수를 사용할때 숫자 문자 등등 형태에 따라 %d, %c, %x 등을 사용하는데 이를 포맷 스트링이라고 한다. 데이터 형태를 알아 볼 수 있게 해주는 역할을 하는 것이 포맷 스트링인데 이를 바꾸는 것이 포맷 스트링 공격이라고 할 수 있다.