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