SFP 값에 대해 궁금한게 있습니다.

...

payload = b"a"*64 + p32(canary) + b"b"*0x8 + shellcode

...

payload 에서 쉘공격이 막혀 원인을 알아봤지만, get_shell함수의 주소와
canary 값의 패킹엔 문제가 없다고 생각했습니다.
그래서 혹시 sfp 값이 잘못인가? 하여 b"b"*0x4 -> b"b"*0x8 로 바꿔봤습니다.
그랬더니 exploit 이 가능해졌습니다..
mov dword ptr[ebp- 0x8], eax
파트에서 분명 8byte 만큼을 할당하고, 4byte 는 Canary
나머지 4byte 는 SFP 라고 생각했습니다만..
왜 8byte가 되는것인지 궁금합니다.

#pwnable
작성자 정보
답변 1
avatar
wyv3rn
무플 방지 위원회장

많은 분들이 질문하셨는데, 잘 보시면 카나리와 sfp 사이에 4바이트의 더미값이 들어있습니다.
정확한 이유는 알 수 없지만, 아무래도 추후에 배우실 movaps align을 위한 부분이지 않나 생각하고 있습니다

2022.12.30. 23:23
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기