[클라우드 바우처] 80% 할인된 금액으로 드림핵 엔터프라이즈를 도입해 보세요. 자세히 알아보기
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
avatar
LinuxBudu
대표 업적 없음

아.. 해결했습니다! 버퍼의 스택에서의 위치를 혼동했습니다ㅜㅜ

2022.09.28. 18:09
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기