Heap 2

strcpy() 이용해서 GOT Overwrite - heap1 문제 해결

이번 문제는 문자열 복사 함수인 strcpy()를 이용하여 GOT 영역을 덮어씌워 프로그램의 흐름을 바꾸는 방식으로 해결했다. 코드 분석heap1.c// Heap Buffer Overflow와 동적 할당 그리고 GOT Overwrite 기법 연계#include // #include는 미리 정의된 함수들이 있는 라이브러리를 가져와 사용.#include #include #include #include struct internet{ //internet이라는 이름의 구조체를 정의 int priority; //4 바이트 priority 멤버 변수를 선언. char *name; // 4바이트 name 멤버 변수를 선언.(포인터)};void winner(){ printf("and we have a winner @..

Heap 메모리 오버플로우 - heap0 문제 해결

이번 문제는 Heap 메모리에서의 오버플로우를 이용하여 함수 포인터를 덮어씌워 흐름을 제어하여 문제를 해결하였다. Stack => 함수의 지역변수들의 공간 (공간의 사이즈는 변경될 수 없음.)Heap => 주소만 알고 있으면 어디서든지 접근이 가능하다. 사이즈를 변경할 수 있고, 할당 받을 사이즈도 직접 정할 수 있다. 가변적인 공간이 필요한 경우 사용되는 공간이다. 원하는 만큼 할당 받고, 사용하지 않을 때는 다시 시스템으로 돌려줘야 하는 공간이다. 해당 프로그램이 종료되면 공간을 돌려주지 않아도 자동적으로 공간이 시스템에게 돌아간다. 프로그램이 계속 실행 중이라면 그만큼 메모리 (RAM)을 잡아 먹기 때문에 프로그램 최적화가 되지 않았다고 할 수 있다. 최적화가 덜 되어 있으면 렉이 걸리고, 메모..