반응형
6강 Linux Exploitation & Mitigation Part 1
6.3 NOP Sled
명령어 중 하나인 NOP(No OPeratrion)은 xchg eax, eax와 같이 프로그램의 실행에 영향을 주지 않아 프로그램 실행 중 NOP 명령어를 만나면 다음 명령어로 넘어가는 것과 같은 효과를 준다. (주로 명령어의 주소 alignment를 맞출 때 사용)
x86 아키텍처의 NOP 명령어 바이트코드는 0x90 으로 NOP Sled(NOP Slide)는 주로 셸코드의 주소를 알기 힘든 경우 큰 메모리를 확보해 셸코드 주소의 오차 범위를 크게 만들 때 사용한다.
위 코드서 NOP Sled를 이용해 새로운 공격 코드를 만들어 보면 10000바이트의 NOP Sled가 포함된 셸코드를 argv[1]에 넣은 후 gdb를 이용해 NOP Sled의 중간 지점의 주소를 찾아보겠다.
vuln 함수에서 strcpy 함수를 호출하는 시점에 브레이크포인트를 설정해 복사 버퍼인 argv[1]의 주소를 알아냈다. NOP Sled 중간 지점의 주소(argv[1] + 50000)를 계산해 본다.
NOP Sled 중간 지점 주소인 0xffff0f73 를 이용해 새로운 공격 코드를 구성할 수 있다.
반응형
'공부 > 보안' 카테고리의 다른 글
[dreamhack] System Exploitation 7강 (0) | 2021.03.12 |
---|---|
[dreamhack] System Exploitation 6강 - NX bit (0) | 2021.03.11 |
[dreamhack] System Exploitation 6강 - Return Address Overwrite (0) | 2021.03.09 |
[dreamhack] System Exploitation 6강 - ELF 동적 분석 (0) | 2021.03.08 |
[dreamhack] System Exploitation 5강 (0) | 2021.03.08 |