미리 알아둘 것 _IO_FILE 구조 이해 (기본적인 리눅스 파일시스템 관리 구조) 이번에는 파일의 데이터를 이용해 다른 파일이나, 화면에 쓰는(표준출력; Standard output)데 사용되는 fwrite() (또는 fputs() 함수)의 작동 원리에 대해 이해하고 이것이 어떻게 악용될 수 있나 살펴봅니다. 우선 (적어도) C언어에서는 파일을 다루기 위해서는 대상 파일을 여는 작업이 필요하며, fopen() 함수를 통해 이를 수행합니다.
이렇게 파일이 열리게 되면, fopen() 함수는 파일을 다룰 수 있는 고유한 값인 file descriptor를 제공하게 되며, 이를 통해 파일에 입출력을 할 수 있습니다. 이때, C/C++를 포함한 많은 프로그래밍 언어들은 fopen() 등의 메서드를 통해 파일이 열리고 나서 발생하는 모든 입출력(I/O) 흐름을 IO Stream이라고 합니다.
FILE* fopen (const char* fileName, const char* fileMode...
#
_IO_FILE
#
struct
#
system
#
vtable
#
구조분석
#
원리
#
자료구조
#
콜스택
#
함수
#
함수분석
#
linux
#
kernel
#
glibc
#
_IO_jump_t
#
analysis
#
C
#
Clang
#
CS
#
C언어
#
exploitation
#
flag
#
fwrite
#
해설
원문 링크 : glibc를 통한 fwrite() 실행 구조 분석