728x90
SMALL
x64환경에서의 풀이입니다

문제 설명에서는 ret2win문제의 취약점은 그대로 존재하지만 필요한 가젯들이 흩어져있다고 한다


main, pwnme함수는 동일하다
strings로 바이너리의 문자열을 봐보자

차이점으로 바이너리안에 system 함수가 있고
ret2win같은 함수가 사라져있다
따라서 이번 문제는 떨어진 system함수를 이용하여 해결해야한다
rbp-0x20 ┌────────────────────┐
│ buf[32] │ ← 0x20 bytes
rbp ├────────────────────┤
│ saved RBP │ ← 8 bytes
rbp+0x8 ├────────────────────┤
│ saved RIP │
└────────────────────┘
스택의 구조는 동일하다
0x28바이트를 패딩으로 넣고 시작해야한다
그리고 호출전에 스택을 정리하기 위해 ret을 넣는다
그리고 system함수에 인자를 넣기 위해 레지스터 준비를 위해 pop rdi ; ret 가젯이 필요하다
그리고 /bin/cat flag.txt 문자열 주소를 넣어서 rdi에 집어 넣는다
마지막으로 system을 call해야한다
이 내용을 순서대로 페이로드를 짜면 다음과 같다


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