Stack Canary
·
공부한 것
Stack Canary스택 카나리(Stack Canary): 스택 버퍼 오버플로우를 탐지하기 위해 함수의 스택 프레임에 삽입되는 보호 값.Stack Canary 보호 기법Stack Canary는 함수가 실행될 때 스택에 임의의 값을 넣어두고, 함수가 종료되기 전에 해당 값이 변조되었는지 확인하는 보호 기법이다.버퍼 오버플로우가 발생하면 일반적으로 지역 변수 영역을 넘어 SFP, Return Address 까지 덮어쓰게 된다.이때 Return Address 앞에 Canary 값을 배치해두면, Return Address가 덮이기 전에 Canary 값이 먼저 변조된다.char buf[0x30];read(0, buf, 0x100);위의 C언어 코드는 buf의 크기보다 더 많은 데이터를 입력받기 때문에 Stack..
Shellcode - orw Shellcode
·
공부한 것
Shellcode셸코드(Shellcode): 익스플로잇을 위해 제작된 어셈블리 코드 조각.orw Shellcodeorw 셸코드: 파일을 열고, 읽고 화면에 출력하는 셸코드.char buf[0x30];int fd = open("/tmp/flag", RD_ONLY, NULL);read(fd, buf, 0x30);write(1, buf, 0x30);위의 C언어 코드를 셸코드로 구현해보자orw Shellcode를 작성하기 위해 필요한 syscall은syscall rax rdi rsi rdxread0x00unsigned int fdchat *bufsize_t countwrite0x01unsigned int fdconst char *bufsize_t countopen0x02const char *filenameint..