포맷 스트링 공격 개념
- prinf() 함수는 문자열로 구성되는 첫 번째 인자에 format string directive 허용
- format string directive를 불명확하게 사용하여 발생하는 취약점 공격
- printf() 함수에서의 포맷 스트링 사용 예
main(){
char *buffer = "good";
printf("%s\n", buffer);
}
첫 번째 인자 %로 시작되는 directive를 순서대로 처리하고, 두 번째 인자에 대응하여 순차적으로 디렉티브 처리한다.
* 첫 번째 인자로서 문자열변수도 허용한다.
해당 코드에서
char *buffer = "good\n%x\n";
로 수정한 경우에는 good 문자열 뒤에 804240이라는 숫자 또한 출력된다.
이 숫자는 good 문자열이 저장된 이후의 메모리에 존재하는 값을 인자로 가정하여 출력했기 때문이다.
'악성코드 > 스텍 프레임 변조' 카테고리의 다른 글
버퍼 오버플로우 BO (0) | 2024.12.12 |
---|---|
포맷 스트링 공격 (0) | 2024.11.19 |