0

PIE 적용 시 가젯 사용

지금까지 PIE가 꺼져 있는 상태에서는 리턴 가젯을 활용해서 read와 같은 함수 주소를 추출할 수가 있었는데요
(GOT 값 직접 추출)
PIE 적용 시 read를 가젯을 통해 추출할 수 없는 건
코드 섹션 주소가 랜덤화되어 ROPGadget으로 가젯 주소를 구할 수 없기 때문인가요?
PIE가 적용된 실행 파일에서 ROPGadget으로 pop rdi 주소를 뽑아보니
0x0000000000000aa3 : pop rdi ; ret
과 같이 뭔가 그럴듯한 주소값으로는 안보이는 값인데요 관련이 있는지 궁금합니다.

1 answers
0

거의 정답을 말씀하셨는데요.
보호 기법 중 ASLR이나 PIE의 경우 특정 영역의 주소를 랜덤화 합니다.
이 랜덤화라는게 모든 주소에 대해 섞어놓는 것이 아닌 BASE ADDRESS만 랜덤하게 할당합니다.

즉 찾으신 값은 OFFSET 값 이며 이를 통해 다른 주소를 찾을 수 있으며,
전제 조건이 “memory leak 가능 시” 입니다.