완료됨
_IO_FILE 구조체

image.png

image.png

_IO_FILE 의 구조체와 payload에서 넣어주는 값을 비교해봤을 때 순서와 개수가 다른데 어떤 순서로 되는건가요?

payload += p64(fp + 0x80) # _lock payload += p64(0x0)*9

위 코드는 무슨 의미인가요?

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

안녕하세요,

*_chain 이후 _fileno_flags2 가 int형이기 때문에 합쳐서 8바이트, 그리고 _old_offset이 8바이트, 마지막으로 _cur_column 부터 _shortbuf까지 8바이트를 차지하기 때문에 그 뒤 _lock 을 넣는 것이 올바른 오프셋이 맞습니다.
64비트 환경에서 8바이트에 맞춰서 값들이 align되기 때문에 헷갈리신 것 같습니다.

덤으로 뒤의 값의 경우 강의에서 #ifdef _IO_USE_OLD_IO_FILE 뒤의 코드를 소개하지 않아서 헷갈리는 것 같습니다. (이후 수정하도록 하겠습니다) 실제로 struct 뒤에 내용물이 더 있는데, 이는 _IO_FILE 소스 코드를 찾아서 꼭 읽어보시는 것을 권장드립니다.

2024.02.27. 18:22