완료됨
_IO_FILE 구조체
_IO_FILE 의 구조체와 payload에서 넣어주는 값을 비교해봤을 때 순서와 개수가 다른데 어떤 순서로 되는건가요?
payload += p64(fp + 0x80) # _lock payload += p64(0x0)*9
위 코드는 무슨 의미인가요?
#pwnable
작성자 정보
답변
1
rbtree_work
대표 업적 없음
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
소스 코드를 찾아서 꼭 읽어보시는 것을 권장드립니다.