2. Code injection
2022. 12. 11. 17:34ㆍ프로그래밍/보안
Stack Smashing attack: 스택 침범 공격
아이디어: %eip(리턴주소)를 공격자가 가게 하고픈 위치로 바꾸어 해당 위치의 코드를 실행시키도록 하자
-> 실행시키고 싶은 코드: 루트 권한의 Shellcode (“/bin/sh”)
공격 준비 단계
1단계: 메모리에 공격자의 코드 넣기 (Stack Smashing attack)
- 코드는 machin code여야 한다. (이미 컴파일되어 실행 중인 상태이기 때문이)
- 코드에 \0가 포함되면 안된다. (\0을 만나면 읽기를 종료 해버리기 때문에)
- 로더(Loader) 사용 불가능
2단계: 넣은 코드 주소 %eip에 넣기 (Stack Smashing attack)
-> %eip의 위치 찾기 (%eip = 4(%esp))
3단계: 넣은 코드의 위치 찾기 (nop sleds)
-> nop sleds: 정확한 코드 위치를 알 수 없더라도 nop(아무것도 하지마)을 앞에 두고 실행지점 까지 미끄러지며 찾는다
nop 크기를 바꿔가면서 찾아본다
'프로그래밍 > 보안' 카테고리의 다른 글
Web security (0) | 2022.12.11 |
---|---|
3. Memory Security, Heap overflow (0) | 2022.12.11 |
1. Buffer overflow (0) | 2022.12.11 |
0. Software Security, Memory layout (0) | 2022.12.11 |
Network Protocols (0) | 2022.12.11 |