LEVEL 2

Return to Library

pwnable
  • 문제 정보
  • 풀이 60
  • 난이도 투표 65
  • 질문 20
  • 최근 풀이자 1516
  • 댓글 40

문제 설명

Description

Exploit Tech: Return to Library에서 실습하는 문제입니다.

출제자 정보

avatar
Dreamhack
대표 업적 없음

First Blood!

avatar
Sechack
CTF First Place
출제된 지 4시간 만에 풀이 완료!

난이도 투표 65

질문 20

문제 풀이에 어려움이 있으신가요?
커뮤니티에서 문제에 대한 질문하고 답변 얻기
return address overwrite 원리
stack 에 아래와 같이 쌓으면 system("/bin/sh") 가 실행되는 것으로 이해됩니다. SFP 다음의 return address 는 buf 를 위치를 말하는 것인가요? 그리고 return addr 아래로 pop rdi, "/bin/sh" 위치, system@plt 주소를 쌓아놓으면 어떻게 system("/bin/sh") 가 실행이 되는지 궁금합니다. buf canary SFP return addr pop rdi /bin/sh 의 주소 system@plt addr of ("pop rdi; ret") <= return address addr of string "/bin/sh" <= ret + 0x8 addr of "system" plt <= ret + 0x10 ret = 0x400285 에서 0x400285 는 어디서 얻어지는지 알고 싶습니다. ubuntu22.04 에서 gcc -o rtl rtl.c -fno-PIE -no-pie 로 빌드했을때는 pwndbg> plt 를 해도 system@plt 가 보이지 않습니다. 문제에서 주어진 ./rtl 을 사용하면 system@plt 주소가 보입니다. 어떤 차이가 있을까요? buf 의 주소가 buf = b"A"*0x39 이라서 buf 사이즈는 0x38 로 어셈블러가 구성된다고 볼수 있습니다. 소스코드에서는 char buf[0x30] 입니다. 왜 어셈블러에서는 8이 더 크게 잡혔을까요? main 함수를 assembly 로 확인해보면 아래와 같이 sub rsp, 0x40 이라서 buf 가 마치 0x40 만큼 잡힌것으로 보여지는데 왜 0x38 로 해야 동작하는지 궁금합니다. ► 0x4006f7 <main> push rbp 0x4006f8 <main+1> mov rbp, rsp 0x4006fb <main+4> sub rsp, 0x40 <<<<< buf 0x4006ff <main+8> mov rax, qword ptr fs:[0x28] 0x400708 <main+17> mov qword ptr [rbp - 8], rax 0x40070c <main+21> xor eax, eax
avatar robinkim129

최근 풀이자 1516

채챙
대표 업적 없음
dretoh
대표 업적 없음
avatar
The Yoshi
대표 업적 없음
le0s1mba
워게임 고인물
조재호
대표 업적 없음
avatar
junan
공부벌레
Iooo
대표 업적 없음
avatar
CHIMITA
강의 수강: 1
yeoniing
대표 업적 없음
yenag
대표 업적 없음

댓글 40

daeseong1209
대표 업적 없음
매우 쉬운!
어렵지만 꽤 많이 배운듯
avatar
스카이넷
강의 수강: 10
ez
O_F
대표 업적 없음
좋습니다.
avatar
buaii
워게임 고인물
GOT...
Huni
대표 업적 없음
good...
avatar
HYN
워게임 고인물
good
sinse100
대표 업적 없음
remind the alignment
l000wk3y
공부벌레
gg
hyuunn
강의 수강: 10
홀리 풀었다