SH1R0_HACKER

006. 초기화되지 않은 메모리 본문

System/System Exploitation

006. 초기화되지 않은 메모리

SH1R0_HACKER 2021. 2. 7. 13:00

변수를 선언하거나 인스턴스를 생성할 때,

프로그래머가 의도한 경우를 제외하고는 반드시 초기화해야 합니다.

 

메모리를 초기화하지 않는다면 쓰레기 값이 들어가고 이것이 문제를 발생시킬 수 있습니다.

 

 

위 예제는 이름의 길이를 입력받고 그 길이가 100 미만이면 메모리를 동적할당합니다.

read 함수는 name_len 데이터 길이만큼 p.name에 저장할 수 있습니다.

여기서 초기화되지 않은 값의 사용으로 인해 문제가 발생합니다.

 

1. read함수는 입력받을 때 널 바이트와 같은 별도의 구분자를 붙이지 않습니다.

따라서 name에 할당된 메모리를 초기화하지 않으면 다른 메모리가 출력될 수 있습니다.

 

2. name_len 변수의 값이 100 이상이거나 같을 경우에 p.name 값은 쓰레기값이 됩니다.

만약 이 값을 조작한다면 read함수를 통해 데이터를 입력받을 때

메모리 주소에 원하는 값을 쓸 수 있습니다.

'System > System Exploitation' 카테고리의 다른 글

008. Buffer Overflow in C++ (1)  (0) 2021.02.09
007. Integer issues  (0) 2021.02.07
005. Double Free & Use After Free  (0) 2021.02.07
004. Format String Bug  (0) 2021.02.07
003. Off-by-one  (0) 2021.02.03