본문 바로가기

악성코드/스텍 프레임 변조

스택 프레임 변수 FS

포맷 스트링 공격 개념

 -  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