자유게시판
익스플로잇(ex)rtl.py) 전송시 수신서버(ex)rtl.c)가 받는 값이 스택메모리에 들어갔는지 디버깅으로 알수있나요?

공격자가 익스플로잇(ex)python3 rtl.py) 전송시 수신서버(ex)rtl.c)가 받는 값이 스택메모리에 들어갔는지 디버깅으로 알수있나요?

이럴 때의 GDB사용법에 대해서 알고싶습니다.
수신서버측은 GDB를 어떻게 켜놓은 상태에서 송신측이 익스플로잇을 날려야 하는지 등등

인터넷으로 찾아보았는데 잘 나와있지 않아서 여쭙니다.

작성자 정보
9개월 전
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로 검색해보시면 될 거 같아요 :)