본문 바로가기

공부/보안

[dreamhack] System Exploitation 6강 - NOP Sled

반응형

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 를 이용해 새로운 공격 코드를 구성할 수 있다.

반응형