카테고리 없음
[소프트웨어보안] Buffer Overflow Attack
와븨
2022. 11. 22. 21:58
Set-UID Programs
Priviledged Programs - 높은 권한 기반 프로그램
Set-UID Programs
- euid를 기반으로 접근통제를 진행하도록 만든 프로그램
Server Programs
- 낮은 번호의 소켓을 생성
- 24x7 실행되어야 함
Device Drivers
- 물리적 장치에 접근하기 위한 소프트웨어
- 장치 접근을 위한 권한이 필요
System Daemons
- 백그라운드에서 실행되면서 시스템의 운영을 지원함
- 부모 프로세스가 없는 프로세스임
권한 필요 사례
password Dilemma
-rw-r--r-- 1 root root 1992 User 9 2014 /etc/passwd
-rw-r----- 1 root shadow 1320 User 9 /etc/shadow
How to allow users to change their password?
- 높은 권한을 가져야 수정할 수 있는 파일
- 낮은 권한을 갖는 사용자가 실행하는 프로그램
Set-UID Programs
passwd program을 Set-UID root 프로그램으로 바꾸기
$ sudo chown root myprog
$ sudo chomod 4755 myprog
Program Memory Layout
Function Stack Layout
void f(int a, int b){
int x,y;
}
위의 함수가 실행되면서 스택이 쌓이는 모습을 표현하면 밑의 그림과 같다.
(1)a와 b의 값이 쌓이고 (2) 리턴할 주소의 값이 저장되고 (3)이전 FP값이 저장된다. 그 이후 (4) 지역 변수 x,y에 a,b의 값이 각각 저장되고, (5) 프레임 포인터의 시작 위치, 즉 현재 함수의 대표 위치를 가리키고 있는 ebp의 주소로 이동한다.
void f(int a, int b){
int x;
}
void main(){
f(1,2);
pirntf("hello world");
}
위의 함수가 실행되면서 스택이 쌓이는 모습을 표현하면 밑의 그림과 같다.