*Quiz 1, 2, 3, 4 풀이:
위의 소스코드를 보면 cdecl 호출 규약을 사용한다는 걸 알 수 있다. cdecl에서 인자는 역순으로 push 되므로,
(a)에는 push 0x3
(b)에는 push 0x2
(c)에는 push 0x1이 들어간다
(d)에서는 sum 함수의 반환값이 eax에 저장되고 push되어있던 세 인수를 정리해줘야 하므로, 12byte(int인수 세 개)만큼이 줄어들어야한다.(x86 아키텍처에서는 push될 때 0x4만큼씩의 공간이 할당된다)
따라서 (d)에는 add esp, 0xc가 들어간다.
*Quiz 5, 6, 7 풀이:
SYSV에서는 인자가 RDI, RSI, RDX, RCX, R8, R9 순으로 저장 된다. 또한 인자가 역순으로 저장된다.
따라서 (a)에는 mov rdx, 0x3
(b)에는 mov rsi, 0x2
(c)에는 mov rdi, 0x1이 들어가야한다
'DreamHack: System Hacking > F Stage 5' 카테고리의 다른 글
basic_exploitation_001 (0) | 2023.04.13 |
---|---|
basic_exploitation_000 (0) | 2023.04.13 |
Exploit Tech: Return Address Overwrite(리턴 주소 변경 및 실습) (0) | 2023.04.11 |
Memory Corruption: Stack Buffer Overflow(개념) (0) | 2023.04.10 |
Background: Calling Convention(함수 호출 규약) (0) | 2023.04.10 |