return address overwrite를 plt주소 or got주소?

전 basic_rop_x64를 먼저 풀어보고 이 문제를 풀었는데
x64를 풀 때에는 return address를 got주소로 덮어씌워서 rop chain을 구성했는데
이번 x86문제 풀이 할 때에는 got로 하면 엉뚱한 곳으로 가서 plt로 보니까 작동을 잘 하더라구요
이유가 궁금합니다!

#pwnable
작성자 정보
답변 3
avatar
믕믕이부하
대표 업적 없음

x64도 RET를 덮어서 함수를 실행할때는 plt를 이용합니다..

2022.05.14. 12:25
Greedun
Closed Beta Tester

plt, got개념을 아시는게 중요할꺼 같아요.
got안에는 실제 함수주소가 들어가게 되고 plt안에는 got영역의 주소가 들어가서 got영역을 가리키게 됩니다.
(plt -> got -> 실제주소)

또한 이유를 모를때는 plt, got메모리 영역안에 어떠한 값,주소가 들어가있는지 확인하면 이해하기가 더 수월 하실꺼예요.

2022.05.15. 23:54
avatar
Sechack
2024 Invitational Contenders

아마 64비트에서 got로 덮어씌웠다는게 return to csu기법을 말하는듯 한데.. csu쪽 가젯에서는 함수포인터로 호출해서 got를 주는게 맞고 plt, got개념을 정확히 아셔야 할듯 싶습니다.

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