1) 버퍼: 지정된 크기의 메모리 공간
2) 스택 버퍼 오버플로우, 힙 오버플로우와 같이 나뉨
3) 스택 버퍼 오버플로우: 가장 초기에 연구되었던 형태의 버퍼 오버플로우. 지역 변수가 할당되는 스택 메모리에서 오버플로우가 발생하는 경우
4) Undefined Behavior: 정의되어 있지 않은 동작, 런타임 중에 어떤 현상이 발생할 지 예측할 수 없다는 뜻
5) Segmentation Fault: 접근 권한이 없는 메모리 영억을 읽거나 쓰려고 할 때 발생하는 예외
get 함수로 buf를 받아오는 프로그램에서 ret 영역을 0x41414141로 만들기
프로그램 동작을 결정하는 auth값을 0이 아닌 값으로 만들면 되므로
temp 뒤에 있는 auth까지 값이 전달되도록 A를 입력해 줌
win값까지 영향을 미치도록 size를 32로 설정해주고 win값을 ABCD로 받도록 해서 출력이 되도록 만듦
A를 31바이트만큼 입력하더라도 “Your Input is: "라는 문자열이 추가되기 때문에
총 길이가 32바이트를 넘겨 버퍼 오버플로우 됨
11 입력시 buf[11]이 되어 buf 영역 밖에 있는 win 값에 접근 가능.
value를 31337로 입력하면 올바르게 출력되는 모습 확인 가능
음수 값을 사용할 수 있으므로 -1을 입력하면 win값의 위치로 이동.
value값을 31337로 입력하면 올바르게 출력되는 것을 확인 가능
음수 값을 양수 값으로 변경하는 조건을 추가함.
그러나 int의 범위는 –2,147,483,648~2,147,483,647이므로 -2,147,483,648은 양수로 변경하지 못함.
copy_buf 함수에서 i<=sz라는 조건을 사용. 반복문이 sz+1번 반복됨.