stack alignment

dandb3·2023년 6월 26일
0

pwnable

목록 보기
12/22

exploit을 진행할 때 간혹 잘못된 것이 없는데도 segmentation fault가 발생하는 경우가 있다.
이 때에는 stack alignment를 의심해 봐야 한다.

stack alignment?

~~ linux 64 ABI ~~

  • 함수 실행 전에 rsp가 16의 배수로 존재해야 한다.

  • 함수를 실행시킬 때에는 일반적으로 call 명령어를 통해서 호출하는데, 이 경우에는 return address를 stack에 push한 후에 rip를 옮겨주기 때문에 call 전에 rsp + 8의 값이 16의 배수여야 한다.

  • 반대로, jmp만을 통해서 함수를 호출하는 경우에는 따로 push해 주지 않으므로 그냥 rsp가 16의 배수이기만 하면 된다.

  • 어셈블리 명령어 상에서는 movaps 명령어가 stack이 align되어 있는지 확인하는 명령어다.

  • 이 명령어가 모든 함수에는 들어있지는 않다.

  • 일단 지금까지는 system, __isoc99_scanf 함수에 movaps가 있는 것을 확인하였다.

참고 자료

profile
공부 내용 저장소

0개의 댓글