도와주세요 고수님들
[rsp+0x48]이 갑자기 왜 나왔는지
거기에 있던 0x555555555293이라는 값이 왜 식별된 것인지
0x555555555293 에서 오프셋을 빼서 베이스 주소를 구해야하는데 저 주소가 가리키는 함수가 뭔 줄 알고 오프셋을 구하는지....
이해가 잘 안가네유...ㅠㅠ
#pwnable
작성자 정보
답변
1
vulnbug
대표 업적 없음
0x555555555293 이라는 주소는 main() 함수의 시작 주소입니다.
해당 주소를 찾는 이유는, main() 함수의 시작점이라는 "심볼"을 통해 오프셋을 계산하는 것으로 PIE의 BASE 주소를 구하고,
changeme 라는 변수의 주소를 확보하기 위함입니다.
로드맵에는 설명이 약간 빠져있는 것 같네요.
changeme는 초기화 되지 않은 전역변수로 선언되어있기 때문에 스택이나 힙이 아닌 .bss 라는 영역 안에 있는데
.bss의 주소는 PIE BASE를 구하는 것으로 계산이 가능합니다.
혹시 이 문제에 대해 추가로 궁금하신 점이 있으면 DM 보내주세요
디버깅 과정을 보여드리며 설명해드리겠습니다.
Discord ID : vulnbug