Types of canaries
Random Canaries는 Canary의 값을 랜덤하게 값이 생성한다.
일반적으로 익스플로잇을 이용해 Canary를 읽는 것은 논리적으로 불가능하다.
Random Canaries는 프로그램 초기 설정 시에 전역 변수에 Canary 값이 저장된다.
이 값은 보통 매핑되지 않은 페이지에 저장됩니다.
해당 메모리를 읽으려는 시도를 할 경우 segmentation fault가 발생하고 프로그램이 종료된다.
공격자가 Canary 값이 저장된 stack address를 알거나 스택의 값을 읽어올수 있는 프로그램이 있다면 Canary의 값을 확인 할 수 있다.
Bild command (set Canary)
Option
gcc -fstack-protector –param ssp-buffer-size=N xx.c ==> byte 변경
gcc -fstack-protector-all xx.c ==> 모든 함수 보호
Build Command(Do not set Canary)
gcc -fstack-protector -o canary canary.c
> readelf -s ./Canary_Do-not-set |grep __stack_chk_fail
> readelf -s /proc/12602/exe |grep '__stack_chk_fail'
Lazy binding (Feat. Now binding) (0) | 2020.03.09 |
---|---|
04. RELRO (0) | 2020.03.09 |
02. ASLR (0) | 2020.03.08 |
01. NX Bit (MS : DEP) (0) | 2020.03.08 |
댓글 영역