완료됨
FSOP를 위한 stdout 덮는 방법 알려주세요 ㅠㅠ

fflush(stdout) 부분에서 stdout이 가리키는 FILE 구조체를 잘 조작한다면 libc leak이 가능하다는 것을 알고, stdout이 가리키는 주소에 값을 덮어쓰기위해서 여러가지 방법들을(스택피보팅, srop, libc brute force 등) 시도했지만 실패했습니다. 가장 성공할 뻔 했던 방법은 main 함수에서 fflush 호출 이후, 초기화되지 않은 레지스터를 이용해서 rop를 해서 stdout이 가리키는 주소에 값을 쓰려고 했지만, 레지스터 값을 적절하게 조작하지 못해서 실패했습니다.

도대체 어떻게, libc leak를 위해서 stdout을 덮을 수 있나요? (다른 분들 질문과 댓글을 봐도 전혀 감이 안잡힙니다.)

#pwnable
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 1
qwerty_io
대표 업적 없음
qwerty_io
대표 업적 없음

stack pivoting을 통해 해당 문제를 해결할 수 있습니다.

stdout과 bss 시작 지점 사이에 rw-공간이 있다는 점과, pop rsi가젯을 사용할 수 있다는 점을 활용하여, stdout에 직접 값을 작성할 수 있도록 만들어보시면 좋을 것 같습니다!

2024.05.16. 18:41