728x90
반응형
데이터 영역의 실행권한을 제거하는 기법이다.
리눅스 커널 5.4.0 미만 버전에서는 스택 뿐만 아니라 힙, 데이터 영역 등 읽기 권한이 있는 모든 페이지에 실행 권한을 부여했다.
5.4.0 이상 버전의 커널은 로더가 따로 스택 영역에만 실행 권한을 부여한다.
대충 짜서 테스트 해 봤다.
# include <stdio.h>
int main() {
int a = 10;
char * ma = malloc(0x10);
printf("%d", a);
}
gcc -z execstack
으로 NXbit 보호기법을 제거할 수 있다.
기본으로 컴파일하면 NX가 부여되어 있다.
nonnx
vmmap 으로 보면 stack 에 실행 권한이 있음을 알 수 있다.
앞서 기술 했듯이 5.4.0 이상 버전이라 스택 영역에만 실행권한이 있다.
onNX
vmmap 으로 보면 stack 에 실행 권한이 빠졌다.
실행 권한이 없으면 스택에서 셸코드가 실행되는 것을 막을 수 있다.
이 글은 옵시디언을 이용해서 작성되었습니다.
728x90
반응형
'TOOR' 카테고리의 다른 글
[TOOR] 5.4. shell_basic write_up (0) | 2023.09.19 |
---|---|
[TOOR] 5.3. Shell Code (0) | 2023.09.19 |
[TOOR] 5.1. BOF (내 안의 버퍼가 넘친다!) (0) | 2023.09.19 |
[TOOR] 4.Handray (0) | 2023.09.19 |
[TOOR] 3.Stack Frame (0) | 2023.09.19 |