-
checksec없이 NXbit 확인하기공부정리 2019. 6. 17. 19:42
NXbit란 Stack, Heap, Data영역과 같이 Data가 저장되는 영역에는 실행권한을 부여하지 않는 보호기법이다.
보호기법 네이밍대로 ELF특정 헤더값에 특수한 Bit값으로 실행권한 부여 여부를 정하게 되는데,
우리들이 보호기법을 확인할 때 자주 사용하는 'Checksec.sh'도 ELF특정 헤더값을 확인하고
NXbit Enable/Disable 여부를 판단한다.
[ GNUSTACK ]
readelf -W -l check_DEP |grep 'GNU_STACK' | grep 'RWE'
위 명령어로 readelf를 이용해서 NXbit 여부를 확인할 수 있다.
ELF헤더의 GNU_STACK Flag값이 RWE(7)로 설정되어 있으면 NXbit가 해제되어 있는 상태이며,
Flag값이 RW(6)으로 설정되어 있으면 NXbit가 적용되어 있는 상태이다.
[ NXbit Enable ]
[ NXbit Disable ]
gcc command : gcc -z execstack -o DEP_off source.c
[ IDA로 확인하기 ]
IDA에서도 헤더 정보를 보고 NXbit 여부를 확인할 수 있다.
[ NXbit Enable ]
NXbit가 적용되어 있는 바이너리는 Flags값이 6(RW-)로 설정되어 있다.
[ NXbit Disable ]
NXbit가 해제되어 있는 바이너리는 Flags값이 7(RWE)로 설정되어 있다.
'공부정리' 카테고리의 다른 글
패턴 검사하는 문제 풀 때 (0) 2019.06.18 vsyscall을 이용한 Exploit (0) 2019.06.16 gdb로 fork된 자식프로세스 디버깅하기 (2) 2019.04.06 Syscall 가젯이 없을 때 (0) 2019.03.06 Return-to-Csu 기법 정리 (8) 2019.03.05 댓글