본문 바로가기
.study/pwnable

[포너블 기초] _IO_FILE

by Carry_on 2023. 11. 26.

_IO_FILE?

  • 리눅스 시스템의 표준 라이브러리에서 파일 스트림을 나타내기 위한 구조체
  • 파일을 열기위해 fopen 함수를 사용할 때 힙 영역에 할당
  • 파일 스트림은 파일에서 데이터를 읽거나 쓰는 데 사용되는 데이터 흐름 

_IO_FILE 구조체

 

_IO_FILE의 구조체 멤버

_flags의 비트플래그

여기서 0xfbad2c84는 _IO_MAGIC, _IO_NO_READS, _IO_LINKED, _IO_TIED_PUT_GET, _IO_CURRENTLY_PUTTING, _IO_IS_FILEBUF 비트가 포함됨

_IO_FILE - _IO_new_file_fopen

_IO_new_file_fopen 함수에서 mode 변수가 ‘r’,’w’,’a’ 문자인지 확인 후, 각 권한에 해당하는 비트가 할당 해 줌

 

_IO_FILE - vtable

  • 객체 지향 프로그래밍 언어에서 클래스를 정의하고 가상 함수를 사용할 때 할당되는 테이블
  • 메모리에 가상 함수를 담을 영역을 할당하고, 함수의 주소를 기록
  • 가상 함수를 사용하면 해당 테이블을 기준으로 상대 주소를 통해 호출
  • 동적으로 할당되는 영역으로 쓰기 권한이 있어 공격에 악용될 수 있음

_IO_jump_t 구조체

'.study > pwnable' 카테고리의 다른 글

[포너블 기초] Out-Of-Bounds  (1) 2023.11.19
[포너블 기초] RTL  (0) 2023.11.12
[포너블 기초] GOT Overwrite, RTL Chaining  (0) 2023.11.12
[포너블 기초]Shell Craft, Lazy Binding  (0) 2023.10.25
[포너블 기초] Egg Shell, NX-Bit  (0) 2023.10.23