Dreamahck

    [Dreamhack-System] SSP_001 WriteUp

    보호되어 있는 글입니다.

    [Dreamhack - System] Stack Canary 정리

    [Dreamhack - System] Stack Canary 정리

    스택 카나리는 함수의 프롤로그에서 스택 버퍼와 반환 주소 사이에 임의의 값을 삽입하고, 함수의 에필로그에서 해당 값의 변조를 확인하는 보호 기법이다. 카나리 값의 변조가 확인되면 프로세스는 강제로 종료된다. 첫바이트가 NULL바이트 8바이트값이 카나리 값이다. + x64 아키텍처에서는 8바이트의 카나리가 생성되며, x86 아키텍처에서는 4바이트의 카나리가 생성된다. 각각의 카나리에는 NULL 바이트가 포함되어 있으므로, 실제로는 7바이트와 3바이트의 랜덤한 값이 포함된다. fs와 TLS fs는 세그먼트 레지스터이다. 특정한 목적이 정해지지 않은 것으로 운영체제에서 임의로 사용할 수 있는 레지스터로, Thread Local Storage(TLS)를 가리키는 포인터로 사용된다. TLS에 카나리를 비롯하여 프..