분류 전체보기

    Structure of Chunk

    우선 chunk는 malloc() 함수가 호출됨으로서 할당받는 영역을 chunk라고 부른다. 32bit에선 chunk가 8byte 단위로 할당이 되고 64bit에서는 16byte 단위로 할당이 된다. chunk는 크게 3가지 타입을 가진다. 기본 구조는 동일하며 약간의 내용물의 차이가 있다. 1. Allocated Chunk (할당되어 있는 청크) 우선 Allocated Chunk의 Structure부터 살펴보자 - 1. Prev_size - 만일 해당 chunk 바로 이전 chunk가 해제된 경우, Prev_size에는 이전 chunk의 크기를 저장한다. 만약 아무런 해제된 chunk가 없고 죄다 할당된 chunk라면 Prev_size는 기본값인 0으로 바뀐다. - 2. size - size field..

    Dynamic memory allocator (glibc malloc)

    오늘은 Dynamic memory allocator를 정리할거다. 근데 다른 Dynamic memory allocator 중에서도 glibc의 malloc을 주로 정리할것이다. 우선 Dynamic memory allocator는 동적으로 할당된 메모리를 관리하기 위해서 사용하는 것이다. Allocator는 크게 두 종류로 나뉜다. 1. Explicit allocator : 개발자가 공간의 할당 / 해제를 관리 EX) libc의 malloc과 free 2. Implicit allocator : 개발자는 공간의 할당만 담당하고 free는 내부적으로 처리 EX) Java의 GC, Lisp등 Explicit allocator에는 위 예시 말고도 여러가지 종류가 있다. - dlmalloc - 리눅스 초창기에 사용..

    first-fit

    first fit은 glibc의 메모리 할당 방법 중 하나에 속한다. glibc의 메모리 할당 방법에는 대표적으로 3가지가 있다. 1. first fit 2. best fit 3. worst fit 그중 이 글에서 정리할 first fit은 순차적으로 할당 가능한 메모리 영역을 탐색하고, 발견하면 그 즉시 바로 할당하는 구조이다. best fit은 External Fragmentation(외부 단편화)이 가장 적게 나는 곳에 할당하는 구조다. worst fit은 남아 있는 공간 중 가장 큰 hole에 할당하는 구조이다. how2heap의 first-fit은 취약점을 보여주는 것이 아닌, 할당 구조에 대해서 설명하는 코드가 있다. #include #include #include int main() { fp..

    [openCV] Hough Transform

    오늘은 Hough Transform에 대해서 공부를 진행해보자 이미지나 영상에서 직선을 검출하고자 할 때 주로 3가지 방법을 고안한다. 1. curve fitting 많은 점들을 가지고 최적의 라인을 찾는 것으로 다수의 점을 이용하여 직선을 찾는다. 2. RANSAC Random Sample Consensus의 약자로 두 점을 가지고 랜덤하게 추출한 후, 최적의 직선을 구하거나 혹은 특이점을 제거하는 알고리즘이다. 3. Hough Transform 직선을 검출하는데 주로 쓰이는 알고리즘으로 빠른 직선 처리와 간단한 알고리즘이다. 0. Hough Transform x, y 좌표계에서 (2,2)가 있다고 가정을 해보자 (2, 2)를 지나는 직선의 방정식을 y = ax + b라고 해보면 2 = 2a + b라고..

    [openCV] Morphology

    오늘은 모폴로지에 대해서 정리해보자 What Is Morphology ? 보통 Binary Image에서 흰색으로 나타내지는 Obeject Area의 형태를 개선하기 위해 사용되는 기법 이런 모폴로지 기법도 오늘 글에서는 4가지 방법으로 갈린다. 1. Erosion 2. Dilation 3. Opening 4. Closing 하나 하나 알아보자 1. Erosion Erosion 연산은 단어에서도 뜻을 알 수 있듯이 침식 연산이다. 말 그대로 이미지를 깎아내는 연산을 뜻합니다. Binary Image에서 흰색 Object의 외곽 픽셀을 검은색으로 만들 수 있다. 노이즈를 제거하거나 붙어 있는 오브젝트를 분리하는 데 주로 사용하는 것이 Erosion 방식이다. Erosion 연산을 위해서는 Structuri..

    [Pwnable] SysROP

    오늘은 SysROP 문제를 풀어보자 우선 NX Bit만 Enabled 되어 있어서 그냥 심플한 ROP 문제일거라고 생각했다. ??: 물론 디버깅을 하기 전까지 별 특별한 거는 없고 read에서 BOF가 터진다. 근데 문제가 생겼다. 출력을 해주는 함수가 없어 leak을 하지 못한다. 이럴때는 Syscall을 이용한 ROP 방법이 있다. 우선 Syscall에 대해서 간략하게 알아보자 What Is Syscall? user단에서 커널단에게 파일을 읽거나 쓰는 특정 작업을 요청할 때 사용되는 어셈블리이다. 유저단에서 커널단으로 요청할때 사용되는 어셈블리가 syscall, int 0x80 이다. (int는 자료형이 아니라 interrupt의 줄임말이다) 우리는 "int 0x80" 명령어가 없으니 syscall ..