728x90
SMALL
x64 바이너리 파일 풀이입니다.



연결절차에 마지막줄에 .dat파일은 무시하라고 되어있습니다

main과 pwnme 함수는 앞 문제들과 동일합니다
패딩을 0x28로 채우고 뒤에서 반환값을 덮어쓰면 됩니다
문제 설명에서 callme_one, callme_two, callme_three를 호출해야하는데
인자로
0xdeadbeef 0xcafebabe 0xdoodoof
값을 넘겨줘야한다고 되어있습니다
문제 설명에 64비트에서는 아래처럼 2배로 값을 써야한다고 되어있습니다
0xdeadbeefdeadbeef 0xcafebabecafebabe 0xdoodoofdoodoof
문제 설명에서 예시를 보여줬는데
callme_one(0xdeadbeefdeadbeef, 0xcafebabecafebabe, 0xd00df00dd00df00d)
이런식으로 함수를 호출해주어야합니다


strings로 바이너리 내부의 필요한 함수 3개가 있는거를 알수있습니다
이번 문제에서는 인자를 3개를 넘겨주어야하기 때문에
System V 호출규약에 따라
rdi가젯뿐만이 아니라 rsi rdx 가젯도 필요합니다

0x40093c 가젯이 바이너리 내부에 존재합니다 이것을 사용하면 됩니다
ret으로 스택을 정렬하고 레지스터 가젯 + 인자 3개 + 함수호출을
3번 다 반복하면 됩니다


728x90
LIST
'[ROP emporium]' 카테고리의 다른 글
| [ROP emporium] split (0) | 2026.06.02 |
|---|---|
| [ROP emporium] ret2win (0) | 2026.06.01 |