완료됨
문제는 풀었지만, 질문이 하나 있습니다.
제가 처음에 시도한 방법은 OOB를 통해서 print함수의 내용을 win 함수의 내용과 바꿔서 print함수를 실행시켜 win 함수를 실행하는 방법이었습니다. 하지만 이렇게 하려니까 다음과 같은 오류가 나면서
실행이 종료되더군요.
저는 NO RELRO라고 되어있길래 데이터를 모두 바꿀 수 있는 줄 알았는데, 왜 이건 안되는거죠?
gdb로 분석해봤는데 xor 함수에 영향이 가는 부분도 아니었습니다.
#pwnable
작성자 정보
답변
2
안녕하세요, Mysecretgarden님.
어떤 오류가 발생하는지 전체 스크린샷을 보여주시면 알 수 있을 것 같습니다.
스크린샷에서 추측하는 바로는 mov qword ptr[rdx + rax], rcx
부분에서 세그멘테이션 폴트가 발생하지 않았을까 싶은데요.
디버깅을 통해 해당 명령어에서 주소 값인 rdx + rax
가 올바른 메모리 영역을 가리키고 있는지 확인해보시면 좋을 것 같습니다.
익스플로잇 과정에서 rdx
나 rax
가 의도하지 않은 값으로 변조되어서 영향을 주었을 가능성이 있습니다.
감사합니다.