완료됨
_IO_IS_APPENDING 값..?

fwrite, fputs 함수를 사용하면 내부적으로 여러 함수를 거쳐 new_do_write 함수를 실행하게 되는데 new_do_write 함수 내부에는 아래와 같이
image.png

파일 포인터의 _flags 변수에 _IO_IS_APPENDING 플래그가 포함되어 있는지 확인 합니다!

_IO_IS_APPENDING 플래그 값은 아래와 같이 0x1000 인데 왜 익스를 할 때는 매직값 0xfbad0000 + 0x1000 이 아니라 매직값 0xfbad0000 + 0x800 인지 모르겠습니다...
image.png

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

실습 강의에서는 _IO_CURRENTLY_PUTTING (0x800)플래그를 활성화해서 _IO_write_base와 _IO_write_ptr 멤버 변수의 값이 _IO_new_file_overflow() 함수에 의해서 다른 값으로 변경되는 것을 방지합니다. 그리고 강의에서는 _IO_IS_APPENDING 플래그 활성화가 아닌 _IO_read_end 멤버 변수의 _IO_write_base의 주소로 덮어씀으로써, lseek 시스템콜 호출을 방지합니다.

2024.04.26. 23:11