포스팅을 시작하겠습니다! 실행파일을 실행시키기 전에 먼저 힌트를 한번 볼까요?
버퍼 오버플로우를 감지하기 위해서 변수 i에 값을 고정 시켜놓았네요. 그리고 strcpy()함수 때문에 bof취약점이 있네요.
그렇다면 변수 i의 위치만 알면 exploit하는건 쉽겠죠? 시작해봅시다 힌트에서 배열의 크기가 1024byte라서 저는 실행시킬때 1024byte보다 더크게 값을 주면 어떻게 될까 보고싶어서 직접 해보았죠 네 위의 그림처럼 제가 변수 i를 건드린것 같네요. gdb를 통해서 변수 i가 스택 상에서 어느 부분에 있는지 확인해봅시다.
[ebp - 12] 부분에 위치하고 있네요. 또한, 배열의 시작위치도 한번 보는게 좋겠죠?
[ebp - 1048] 부분에 위치하고 있네요. 여기서 생각을 잠시동안 해 봅시다!
배열의 크기는 1024byte이기 때문에 1024(byte) + 24(dump) = 1048 으로 추정해봅시다. 하지만 변수 i의 위치가 [ebp - 12]이므로 1036(1048 ...