buf28
문제는 풀었지만 char buf의값는 28인데 buf 30 이들어가는 이유가 궁금합니다
#pwnable
작성자 정보
답변
1
2dedce
워게임 고인물
0x00000000004006e8 <+0>: push rbp
0x00000000004006e9 <+1>: mov rbp,rsp
0x00000000004006ec <+4>: sub rsp,0x30
0x00000000004006f0 <+8>: mov eax,0x0
0x00000000004006f5 <+13>: call 0x400667 <init>
0x00000000004006fa <+18>: lea rdi,[rip+0xbb] # 0x4007bc
0x0000000000400701 <+25>: mov eax,0x0
0x0000000000400706 <+30>: call 0x400540 <printf@plt>
0x000000000040070b <+35>: lea rax,[rbp-0x30]
0x000000000040070f <+39>: mov rsi,rax
0x0000000000400712 <+42>: lea rdi,[rip+0xab] # 0x4007c4
0x0000000000400719 <+49>: mov eax,0x0
0x000000000040071e <+54>: call 0x400570 <__isoc99_scanf@plt>
0x0000000000400723 <+59>: mov eax,0x0
0x0000000000400728 <+64>: leave
0x0000000000400729 <+65>: ret
저는 잘 모르겠지만 rsp는 16바이트로 정렬되야해서 16진수로 나타냈을 때 끝자리가 0으로 끝나야 할 겁니다.
그렇기 때문에 0x28 대신에 0x30을 할당하면 끝자리가 8보다는 0인게 더 좋죠. 그래서 sub rsp,0x30
를 하게 된 것 같고 남은 8바이트는 버리는 것 같습니다.