IO_FILE_Vtable overwrite

728x90

IO_FILE은 리눅스 시스템의 표준 라이브러리에서 파일 스트림을 나타내기 위한 구조체

fopen, fwrite과 같은 함수를 통해 파일 스트림을 열때 힙에 할당

IO_FILE 구조체의 멤버 변수중 _flags는 파일에 대한 추가권한을 의미, 0xfbad0000가 magic number

_chain : IOFILE 구조체는 chain필드를 통해 linked_list를 만든다.

실제 파일 스트림을 열때는 io_file_plus 구조체 리턴

io_file_plus 구조체는 파일 스트림에서의 함수 호출을 용이하게 하기 위해 io_file 구조체에 함수 포인터 테이블을 가리키는 포인터를 추가한 구조체

io_jump_t에는 파일에 관련된 여러 동작을 수행하는 함수 포인터들이 저장. 이들은 fread, fwrite, fopen 과 같은 표준 함수들에서 호촐됨.

stdin, stdout, stderr 세 파일 스트림은 프로세스가 시작할 때 라이브러리에 의해 기본적으로 생성되는 파일 스트림

IO_FILE vtable overwrite → FSOP라고 검색하면 많은 자료 나옴

파일 함수가 호출되면 파일 포인터의 vtable에 있는 함수 포인터 호출.

728x90

'Technique' 카테고리의 다른 글

레지스터 종류  (0) 2021.10.02
Heap Spray  (0) 2021.10.01
PIE 디버깅  (0) 2021.07.25
SROP  (0) 2021.07.25
tcache stashing unlink attack  (0) 2021.06.21