[DreamHack] Bypass IO_validate_vtable Write-up
vtable 검증을 우회하려면 _libc_IO_vtables영역에 존재하는 함수들을 fake vtable로 사용해야한다 ex) _IO_str_overflow 코드분석 #include #include FILE *fp; void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } int main() { init(); fp = fopen("/dev/urandom", "r"); printf("stdout: %p\n", stdout); printf("Data: "); read(0, fp, 300); fclose(fp); } stdout의 주소를 출력한다 fp에 입력할 수 있음 익스플로잇 1.라이브러리 주소 계산 stdout주소를 통해 libc_base와 ..
[DreamHack] _IO_FILE Arbitrary Address Write Write-up
코드분석 #include #include #include char flag_buf[1024]; int overwrite_me; void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } int read_flag() { FILE *fp; fp = fopen("/home/iofile_aaw/flag", "r"); fread(flag_buf, sizeof(char), sizeof(flag_buf), fp); write(1, flag_buf, sizeof(flag_buf)); fclose(fp); } int main() { FILE *fp; char file_buf[1024]; init(); fp = fopen("/etc/issue", "r"); pr..