형식화 된 I/O 함수가 제공된 인수보다 많은 인수를 예상 할 때 Format String Attack이 발생한다는 것을 알고 있습니다. C에서C에서 Format String Attack이 발생하는 이유는 무엇입니까?
, 메모리 위치를 읽기위한
한 예 :
printf("%x"); // this prints a memory address location in the stack
메모리 위치에 덮어 쓰기에 대한 또 다른 예 :
printf("Overwritten%n"); //this prints the number of chars in "Overwritten"
내 질문은 : 왜 이런 일이 일어날 않습니다를 두 경우 모두? 해당 값을 제공하지 않고 서식이 지정된 문자열에 % x 만 있으면 왜 메모리에 주소가 인쇄됩니까? 그 주소가 정확히 무엇입니까? 나는 그것이 일어난다는 것을 알고있다. 그러나 정말로 무엇이 계속하고 있냐?
덮어 쓰기와 동일합니다.
전화 협약에 대해 읽어 보시기 바랍니다 : http://en.wikipedia.org/wiki/Calling_convention –
[위키 피 디아 문서] (http://en.wikipedia.org/wiki/Uncontrolled_format_string)의 링크를 따라 검색 그 용어가 거기에서 사용되었습니다. YouTube에 관한 동영상도 있습니다. –