참고글: https://msdn.microsoft.com/ko-kr/library/ms175782.aspx


보안 관련 강의를 듣다보면 포맷 스트링 공격에 대한 언급이 나온다.


예시로 다음과 같은 코드를 보통 사용한다.


void main() {

	long i = 0x00000064, j = 1;
	printf("i의 주소 : %x\n", &i);
	printf("i의 값	: %x\n", i);

	printf("%64d%n\n", j, &i);

	printf("변경된 i의 값 : %x\n", i);


막상 해보면 다음과 같은 오류가 발생한다.



해결 방법은 위의 참고글에 올라온대로


_set_printf_count_output(1);을 사용하면 된다.





정상적으로 출력이 되는 것을 확인할 수 있다.

void main() {
	_set_printf_count_output(1);
	long i = 0x00000064, j = 1;
	printf("i의 주소 : %x\n", &i);
	printf("i의 값	: %x\n", i);

	printf("%64d%n\n", j, &i);

	printf("변경된 i의 값 : %x\n", i);
}



+ Recent posts