
[ 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가 죽음. 이유는
부모프로세스가 죽으면 자식프로세스는 고아가 되기 때문이다.
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까지 추가할 예정..
반응형
'TOOLS & Error' 카테고리의 다른 글
[ TIP ] SpaceSniffer 파일 크기 별로 시각적으로 표현 (0) | 2022.08.13 |
---|---|
가독성 UP vscode 변수, 전역변수별 색깔 변경하기 (0) | 2022.07.03 |
[ Tools ] nmap과 shodan사용법 (0) | 2022.05.12 |
[ Linux ] error while loading shared libraries 라이브러리 찾지 못 할때 (0) | 2022.05.07 |
[ Linux ] man- No manual entry for (0) | 2022.05.02 |
2개의 댓글