헷갈려서 정리해본다.
void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset);
return
: 매핑이 시작하는 실제 메모리 주소, 실패할 경우 -1
parameter
void *addr
: 매핑을 시작할 주소size_t len
: 매핑시킬 메모리 길이int prot
: 매핑시킨 메모리에 적용시킬 메모리 보호정책rwx 권한을 설정해서 줄 수 있다.
int fd
: 이fd
를 기준으로mmap()
한다.off_t offset
: 매핑할 때size_t len
의 시작점을 지정함
int prot
인자는 아래와 같당.
/* pages can be read */
/* pages can be written */
/* pages can be executed */
static linked binary
일 경우에는 가젯들을 잘 찾아서 mmap으로 실행권한이 있는 공간을 할당 한 후에 그곳에 memcpy()
함수로 쉘코드를 복사 시킨 후 쉘코드를 실행시킬 수 있당!
mprotect()
를 활용한 ROP
'ETC' 카테고리의 다른 글
[ETC] STRIDE Threat modeling 위협 모델링 (0) | 2020.02.03 |
---|---|
[Web] server-client간의 CGI 통신 (0) | 2019.09.26 |