본문으로 바로가기

[pwn] - pwntools 로 PIE base 구하기

category Security/pwnable 2020. 2. 23. 09:37

바이너리에 PIE가 걸려 있다면, 디버깅 할때 주소가 랜덤으로 바뀌어 breakpoint를 걸 수 가 없다.

 

하지만 PIE base를 구할 수 있다면, 주소가 랜덤으로 바뀌어도 breakpoint를 걸 수 있다.

 

바로 아래 코드가 중요하다.

libc_base = p.libs()["바이너리 절대 경로"]

 

 

 

간단한 예를 보면 다음과 같다.

from pwn import *

context.terminal = ['tmux', 'splitw', '-h']
context.log_level = 'debug'

p = process("./challenge")
e = ELF("./challenge",checksec=False)
libc_base = p.libs()["/home/ubuntu/environment/ctf/pwnable.xyz/20_message/challenge"]

func_addr = libc_base + e.symbols["function_name"]


script= '''
b *{}
c
'''.format(hex(func_addr))

gdb.attach(proc.pidof(p)[0], script)


p.interactive()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


댓글을 달아 주세요

  1. 111 2020.02.24 15:14

    방명록 좀 봐주시요...