728x90
반응형
내안의 버퍼가 넘친다!..
버퍼가 넘치는 것이다.
버퍼가 어디에 위치하냐에 따라 Stack Buffer OverFlow, Heap Buffer OverFlow 가 된다.
ret 덮으면 rip 변조가 가능한데 이걸 return address overwrite 라고 한다.
발생 원인으로 입력값에 대한 길이 검증이 없어서 발생하는 것이다.
흔히 scanf, gets, read, strcpy, sprintf
여기서 왜 sprintf 는 출력인데 왜 그러냐 하겠지만
int sprintf(char *str, const char *format, ...);
이 친구는 출력을 stdout 이 아닌 문자열 포인터인 str 에 입력한다.
따라서 bof 가 발생할 수 있다.
이 취약점을 막기 위해서는 입력값 검증을 해주는 함수를 사용하거나 입력값의 길이를 검증해주면 된다.
이건 스택을 hex map으로 출력해주는 문제임.
input buffer 인데 이놈한테 많이 입력 해주면?
요로코롬 overwrite_me 까지 덮히는 것이다.
이게 Buffer OverFlow 내안의 버퍼가 흘러 넘치는 고런거
왜 터지는고 하니 intput 은 0x20 크기의 버퍼인데 입력은 0x30 만큼 받네?
그럼 스택에는
input [0x20]
overwrite_me[0x10]
이렇게 있을 거니까 input을 넘어서 overwrite_me 까지 덮히게 되는 것이다.
기초적인 기법의 거의 대부분의 문제가 bof로 트리거 되는 거 같다.
끝.
이 글은 옵시디언을 이용해서 작성되었습니다.
728x90
반응형
'TOOR' 카테고리의 다른 글
[TOOR] 5.3. Shell Code (0) | 2023.09.19 |
---|---|
[TOOR] 5.2 NXbit (0) | 2023.09.19 |
[TOOR] 4.Handray (0) | 2023.09.19 |
[TOOR] 3.Stack Frame (0) | 2023.09.19 |
[TOOR] 2.Calling Convention (0) | 2023.09.19 |