목록전체 글 (66)
ghkdtlwns987
이번엔 _IO_flush_all_lockp 함수로 Exploit 하는 방법에 대해 공부해보도록 하겠다. #define fflush(s) _IO_flush_all_lockp (0) fp = (_IO_FILE *) _IO_list_all; while (fp != NULL) { run_fp = fp; if (do_lock) _IO_flockfile (fp); if (((fp->_mode _IO_write_ptr > fp->_IO_write_base) #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T || (_IO_vtable_offset (fp) == 0 && fp->_mode > 0 && (fp->_wide_data->_IO_write_ptr > fp->_wide_da..
이번엔 fclose() 함수를 분석해보도록 하겠다. fclose() 함수의 소스는 다음과 같다. int _IO_new_fclose (FILE *fp) { int status; CHECK_FILE(fp, EOF); #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) /* We desperately try to help programs which are using streams in a strange way and mix old and new functions. Detect old streams here. */ if (_IO_vtable_offset (fp) != 0) return _IO_old_fclose (fp); #endif /* First unlink the stream..
FSOB 에 대해 공부해보도록 하자. 사실 이전에 _IO_File_vtable2 , _IO_File_vtable_check 글에서 Exploit 했던 것이 바로 FSOB 이다. 하지만, FSOB 라고 따로 언급하지도 않았고, 그다지 자세히 설명하지 않았기 때문에, 이번글에서 정리해보고자 한다. 다음은 FILE * fp 구조체이다. struct _IO_FILE { int _flags; /* High-order word is _IO_MAGIC; rest is flags. */ #define _IO_file_flags _flags /* The following pointers correspond to the C++ streambuf protocol. */ /* Note: Tk uses the _IO_read_..