나는 Raspberry Pi (ASLR 비활성화 됨)에서 버퍼 오버플로를 생성하려고합니다. main function
, vulnerable function
및 호출하지 않아야하는 함수 인 evil function
이있는 프로그램이 있습니다.GDB : 함수의 반환 주소가 저장된 스택 메모리 주소를 찾으십니까?
내 주요 함수는 어느 시점에서 취약 함수를 호출하지만 악의 함수는 분명히 호출되지 않습니다. 나는 그것이 버퍼 오버 플로우를 사용하는지 확인해야한다.
그래서 지금까지 얻은 것은 main 함수에있는 취약한 함수의 반환 주소입니다.이 함수는 evil 함수의 시작 주소로 덮어 쓰려고합니다. 나는 이것이 올바른 접근이라고 생각한다.
그러나 gdb에서 메모리를 검사하여 스택 주소에서 반환 주소가 저장되는 방법을 찾을 수 없었습니다. 프로그램이 실행되는 동안 gdb를 통해 문자열을 입력하는 예제가 있습니다. 그런 다음 스택 포인터 주변의 메모리를 조회하고 리턴 주소가 저장된 곳을 찾습니다. 이것은 필자가 필자가 필사적으로 원했던 반송 주소로부터 단지 몇개의 주소를 저장한다는 것을 어떻게 알 수 있었기 때문에 나에게는 이상한 것처럼 보인다.
제 질문은 gdb를 사용하여 반환 주소에 대한 스택을 '검색'할 수 있는지입니다.