_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 |