힙 썸네일형 리스트형 unlink (10points) 해당 문제를 확인해 본 결과 unlink를 이용하여 memory corruption을 일으키는 것으로 예상된다. 해당 문제의 디렉토리 내부를 확인해 본 결과 flag로 예상되는 파일과 솔루션 텍스트 그리고 실제 바이너리와 해당 바이너리에 대한 소스코드가 있는 것으로 확인된다. 바이너리를 실행해본 결과 stack과 heap의 주소를 보여주며, 입력을 받은 뒤 종료되는 것으로 확인된다. 소스코드를 확인해보자. #include #include #include typedef struct tagOBJ{ struct tagOBJ* fd; struct tagOBJ* bk; char buf[8]; }OBJ; void shell(){ system("/bin/sh"); } void unlink(OBJ* P){ OBJ* B.. 더보기 메모리의 동적 할당 ◇ 메모리의 동적 할당 함수의 반환형은 void형 포인터고 인자는 정수가 들어간다. 예시로 int main(void){void * ptr1 = malloc(4); // 4바이트가 힙 영역에 할당void * ptr2 = malloc(12); // 12바이트가 힙 영역에 할당 . . . . free(ptr1); // ptr1이 가리키는 4바이트 메모리 공간 해제free(ptr2); // ptr2이 가리키는 4바이트 메모리 공간 해제 . . . . } 다음과 같은 소스코드에서 malloc함수의 활용을 확인해보자. malloc(4);malloc(12); 함수는 힙 영역위의 메모리 공간에 4바이트 만큼의 공간을 확보하고 확보된 메모리 공간의 주소값을 반환한다. 힙 영역위의 메모리 공간에 12바이트 만큼의 공간을 .. 더보기 이전 1 다음