본문 바로가기
[ROP emporium]

[ROP emporium] write4

by 토끼여우 2026. 6. 12.
728x90
SMALL

x64 바이너리 문제 풀이입니다

문제에서 print_file의 plt가 있다고 한다

하지만 바이너리 내부에는 flag.txt 관련 문자열이 없으므로 직접 쓰기 가능한 영역에 넣어서 함수의 인자로 넘겨서 실행시켜야한다

 

strings로 본 결과 해당 함수는 존재하였다

 

방지기법은 Partial RELRO와 NX만 켜져있다

 

readelf을 본 결과

data 영역에 쓰기권한이 존재하는것을 볼 수 있다

get_section_by_name('.data').header.sh_addr를 이용하여 pwntools에서 주소를 가져올 수 있다

 

문자열을 삽입하기 위해 r14 r15 레지스터가 필요함으로 ROPgadget으로 pop r14 r15, mov r14 r15 가젯의 주소를 확보했다

인자를 전달하기 위한 rdi 가젯도 확보한다

 

페이로드는 다음과 같이 작성하였다

pop [r14], r15로 스택에서 값을 가져오고

data영역에다가 flag.txt 문자를 넣어서 

mov [r14], r15로 작성한다

 

그리고 data영역을 print_file의 인자로 넘겨주며 코드를 실행하게 된다

 

728x90
LIST

'[ROP emporium]' 카테고리의 다른 글

[ROP emporium] callme  (0) 2026.06.03
[ROP emporium] split  (0) 2026.06.02
[ROP emporium] ret2win  (0) 2026.06.01