| skyclad1975 |
GDB로 열어서 확인해본 결과
0x08048473 <main+3>: sub esp,0x108
이런 부분과
0x08048499 <main+41>: lea eax,[ebp-264]
0x0804849f <main+47>: push eax
0x080484a0 <main+48>: call 0x804835c <strcpy>
이런 부분이 있었습니다.
스택에서 총 0x108, 즉 264바이트만큼을 할당하였으며,
str 문자열의 시작주소는 ebp-264라고 볼수 있겠습니다.
애초에 str 문자열이 256바이트짜리이니, 최소한 256바이트 이상, Dummy 값이나 SFP까지 포함해서 264바이트정도는 넣어야 하지 않나 싶네요.
실제로 ./attackme `python -c 'print "a"*263'`
이렇게 실행했을 때에는 정상적으로 동작하였습니다.
아직 리턴 어드레스를 침범하지 않았다는 뜻이죠.
그리고 기본적으로 문자열은 문자열의 끝을 나타내기 위해 끝에 자동적으로 '\0' 으로 널 문자가 붙는다는것도 생각하고 시도하셔야 합니다. |
2015/01/24 |
|