libc_start_main_xx와 BOF 관계
안녕하세요, libc_start_main_xx를 구할때, BOF를 유도하는 페이로드를 먼저 보내서 Return address를 recv하여 libc_start_main_xx에 저장하는 부분에서 궁금증이 생겼습니다.
저기서 Return address는 read(0,buf,0x100) 함수에서 다시 main함수로 돌아올때의 주소값인거로 gdb에서 나오는데,
강의내용에서는 저 주소값에서 libc_start_main + 231의 오프셋을 빼서 libc의 base주소를 구합니다.
위에서 recv로 받은 return 주소는 libc_start_main +231의 주소가 아니라 (즉, main함수가 종료되고 나서 다시 돌아가는 주소가 아니라), read(0,buf,0x100)이 종료되어서 다시 main함수의 다음 명령어로 돌아가는 주소 아닌가요?? 해당 주소에서 libc_start_main+231을 빼는 부분이 그래서 이해가 잘 되지 않습니다..
#시스템_해킹
#공격기법
#hook_overwrite
작성자 정보
답변
1
LinuxBudu
대표 업적 없음
아.. 해결했습니다! 버퍼의 스택에서의 위치를 혼동했습니다ㅜㅜ