[ Pwntools ] pwntools와 gdb연결하기

sangjun

·

2022. 6. 27. 11:26

반응형

간단 요약

pwntools로 프로그램에 argv를 넘겨주어 디버깅하고 싶은데 바로 프로그램이 실행되서 죽어버릴 때

gdb.debug()를 이용해 _start나 main에 break point걸고 디버깅을 시작한다.

 

실행화면은 아래와 같다.

 

주의 사항 : docker, vscode 터미널등에서는 안됨. 우분투 쉘 프롬프트 창에서만 되는것 같다. 이유는 모르겠다. 

                 io = gdb.debug()를 넣어준 다음 io.interactive()로 세션을 유지시켜줘야 한다. 안 그러면 gdb가 죽음. 이유는

                 부모프로세스가 죽으면 자식프로세스는 고아가 되기 때문이다.

참고: Organizers 형님들 블로그

from pwn import *
exe = context.binary = ELF("./MeshConverter")

def local(argv=[], *a, **kw):
    '''Start the exploit against the target.'''
    print(argv)
    return gdb.debug([exe.path] + argv, gdbscript=gdbscript, *a, **kw)

gdbscript= '''
    break _start
    continue

    # Now set breakpoint on shared library routines
    #break malloc
    #break free
    break main
    continue
    '''

io = local(argv=["./sample.md2","/dev/null"])
io.interactive()

 

 

포너블 1년차따리..

시간을 아끼기 위해 이제 툴에도 신경을 쓸 때가 됐다...

실제로 어떤 도구를 이용하냐에 따라 문제가 풀리고 안 풀릴지가 결정되고

리얼월드에서 발견한 크래시를 치명적인 보안 문제점으로 이끄는데에 중요한 역할은 한다.

 

 

다음은 ida remote debuging까지 추가할 예정..

반응형

2개의 댓글