C코드와 실행파일 사이 buf 크기 차이
C코드에는 buf 크기가 0x28로 기억되어있는데,
GDB로 바이너리 실행파일을 분석해보니 buf크기가 0x30으로 되어있는거 같습니다
혹시 C언어 코드에 오타가 났다고 이해해도될까요?
#pwnable
작성자 정보
답변
2
Karatus
워게임: 50
아뇨. 컴파일러 최적화로 padding
이 들어갈 수도 있습니다.
sangjun
공부벌레
gcc컴파일러로 컴파일 시에
mpreferred-stack-boundary=N
옵션을 통해 스택의 배수를 설정해주실 수 있습니다
이때 N은 2의 지수를 나타내는 것으로
디폴트오 4로 설정되어있다고 합니다
2^4=16으로 stack aligned가 0x10씩으로 떨어져야 하니 0x28->0x30으로 바뀐 것 같습니다.
또한 stack aligned를 하는 이유는 성능의 최적화를 위해서 하는것으로 알고 있습니다.
자세한 것은 검색이나 아래 링크에서 확인하실 수 있습니다
https://j-jaeyoung.tistory.com/6?category=454813