gdb/gdbserver를 사용하여 원격으로 중단점 설정

gdb/gdbserver를 사용하여 원격으로 중단점 설정

원격 호스트에서 취약한 애플리케이션을 디버깅하고 있습니다. 호스트에 gbserver를 설정했습니다.

gdbserver host:1234 /my/target/app

내 로컬 호스트에 연결되어 있습니다.

$ gdb /same/target/app
gdb$ target extended-remote 192.168.0.100:1234

성공적으로 연결되었으며 대상 명령어에 중단점을 계속 설정할 수 있습니다.

$gdb disas vuln_function
....
   0x08048e6b <+116>:   ret
End of assembler dump.
gdb$ b *0x08048e6b
Breakpoint 1 at 0x8048e6b

디스어셈블된 함수 코드를 보고 호스트 자체에서 테스트한 결과, 올바른 주소에서 중단하고 있으며 어쨌든 버퍼 오버플로를 유발하고 있으며 이로 인해 gdb가 자체적으로 중단될 것이라고 100% 확신합니다. .

하지만 내 gdb 클라이언트는 일반적인 중단점을 얻지 못하고 아무 일도 일어나지 않습니다. gdbserver는 segfault를 발생시키지 않고 BO에서 정지합니다(따라서 ret에서 중단되는 것 같습니다). 중단점에 대해 메시지를 표시하지 않는 것 외에는 gdb가 충돌하거나 오작동하지 않는 것 같습니다.

gdbserver로 디버깅할 때 중단점을 설정하는 특별한 방법이 있나요?

관련 정보