Bypass IO_validate_vtable
·
Tips & theory
그냥 대충 훑어보면 절대 이해 못한다. 자세히 읽어보고 이해가 되면 넘어가자. 원리 _IO_FILE 구조체에서는 vtable을 참조하는데, vtable 내 함수를 조작할 수 있다면 임의의 함수를 실행할 수 있다. *libc 2.23 버전 이하와 2.24 버전 이상에서의 공격 방식이 조금 다르다. *2.29 이상에서는 완전히 패치 되었다. 취약점 앞서 본 _IO_FILE 구조체는 사실 혼자 있는 것이 아닌 vtable 구조체와 함께 한다. struct _IO_FILE_plus { FILE file; const struct _IO_jump_t *vtable; }; 즉, _IO_FILE_plus 구조체 내에 file, 즉 _IO_FILE 구조체와 vtable 구조체가 존재한다. _IO_jump_t _IO_ju..