buffer over flow 이론
System/Buffer Over Flow
2015. 1. 6. 15:36
버퍼오버 플로우는 버퍼가 넘쳐서 다른 값을 건들이는 공격 입니다.
버퍼오버 플로우는 ret값을 건들여 공격쉘을 실행 하는 것입니다.
버퍼는 데이터를 전송하고나 보관하는 메모리 임니다.
버퍼는 메모리의 힙이나 스텍에 존제 합니다.
스텍과 힙의 특징은
스텍은 높은 주소부터 시작하고 힙은 낮은 주소부터 시작합니다.
간단한 취약점이 있는 프로그램을 만들었습니다.
그냥 인자 값을 출력하는 프로그램 입니다.
a를 6번입력하면 6번 나옴니다.
이 프로그램의 취약점은 strcpy로 복사를 할떄 버퍼의 크기만큼 제한하지 않는다는점 입니다.
제한하지 않으면 버퍼의 크키를 넘어버리는 문자열을 넣게 되면 오류가 발생한다는 것입니다.
스텍 구조를 보겟습니다.
프로그램에 인자 값을 넘겨 줄떄 인자 값이프로그램 앞에 오게 되므로 ret주소 위에 있습니다.
허나 ret주소는 프로그램이 시작하기 전 주소로 돌아감니다.(프로그램이 종료 되면 스텍이나 힙을 정리해줌)
또한 리틀에디안을 사용하기 때문에 buffer가 넘치면 ebp와 ret을 건들이기 됨니다.
인자 값을 가져올때는 최초 ebp에서 12를 뺸주소에서 가져오게 됨니다.
8을 뺴면 인자의 수를 알수 있습니다.
인자의 수 에 따라 4를 더해 거나 뺴서 인자값을 가져올수 있습니다.
'System > Buffer Over Flow' 카테고리의 다른 글
bof) 스텍 기반의 버퍼오버 플로우 -default (0) | 2014.09.12 |
---|---|
간단한 hello_world 쉘 코드 만들기 shell code (0) | 2014.09.03 |