return address overwrite를 plt주소 or got주소?
전 basic_rop_x64를 먼저 풀어보고 이 문제를 풀었는데
x64를 풀 때에는 return address를 got주소로 덮어씌워서 rop chain을 구성했는데
이번 x86문제 풀이 할 때에는 got로 하면 엉뚱한 곳으로 가서 plt로 보니까 작동을 잘 하더라구요
이유가 궁금합니다!
#pwnable
작성자 정보
답변
3
믕믕이부하
대표 업적 없음
x64도 RET를 덮어서 함수를 실행할때는 plt를 이용합니다..
Greedun
Closed Beta Tester
plt, got개념을 아시는게 중요할꺼 같아요.
got안에는 실제 함수주소가 들어가게 되고 plt안에는 got영역의 주소가 들어가서 got영역을 가리키게 됩니다.
(plt -> got -> 실제주소)
또한 이유를 모를때는 plt, got메모리 영역안에 어떠한 값,주소가 들어가있는지 확인하면 이해하기가 더 수월 하실꺼예요.
Sechack
2024 Invitational Contenders
아마 64비트에서 got로 덮어씌웠다는게 return to csu기법을 말하는듯 한데.. csu쪽 가젯에서는 함수포인터로 호출해서 got를 주는게 맞고 plt, got개념을 정확히 아셔야 할듯 싶습니다.