공격자가 익스플로잇(ex)python3 rtl.py) 전송시 수신서버(ex)rtl.c)가 받는 값이 스택메모리에 들어갔는지 디버깅으로 알수있나요?
이럴 때의 GDB사용법에 대해서 알고싶습니다.
수신서버측은 GDB를 어떻게 켜놓은 상태에서 송신측이 익스플로잇을 날려야 하는지 등등
인터넷으로 찾아보았는데 잘 나와있지 않아서 여쭙니다.
작성자 정보
댓글
1
익명
(219.251)
p = process(~~)
print(p.pid) # 프로세스의 pid 출력
pause()
...
로컬에서 테스트하는 경우 이렇게 exploit.py를 작성하고
1. python3 exploit.py 실행 -> 프로세스의 pid 출력 후 pause
2. 다른 터미널을 열어서 gdb 실행
3. gdb에서 attach <pid> (예 : attach 132)를 실행하면
gdb로 pwntools로 실행한 프로세스를 디버깅 할 수 있습니다
이후
1. gdb에서 입력 받은 후의 주소에 breakpoint를 걸고 continue 실행
2. 공격 코드를 실행한 터미널에서 엔터를 눌러 pause를 풀어주면 gdb로 원하는 곳에서 스택의 값을 확인하실 수 있습니다
이 방법 말고도 pwntools의 gdb.attach()를 사용하실 수 있는데 제가 자주 사용하지 않아서 사용법을 잘 모르겠네요
더 자세한 내용은 pwntools gdb.attach로 검색해보시면 될 거 같아요 :)