house of orange
-
houseoforange - HITCON 2016Write-ups/CTFs 2020. 2. 27. 18:49
Prob Info 모든 보호기법이 걸려있다. 또한 이름에서 알 수 있듯이 House of Orange 문제이다. Code void __fastcall __noreturn main(__int64 a1, char **a2, char **a3) { signed int v3; // eax setup(); while ( 1 ) { while ( 1 ) { menu(); v3 = read_long(); if ( v3 != 2 ) break; see_house(); } if ( v3 > 2 ) { if ( v3 == 3 ) { upgrade_house(); } else { if ( v3 == 4 ) { puts("give up"); exit(0); } LABEL_14: puts("Invalid choice"); } ..
-
House of Orange - how2heapHeap exploitation/how2heap 2020. 2. 26. 13:59
Abstract House of Orange는 Fake _IO_FILE_plus를 만들고 IO_list_all를 수정한 후 의도적으로 힙에 손상을 일으켜 에러 메시지를 출력하게 한다. 이 때 abort.c 안의 _IO_flush_all_lockup()을 통해 에러 메시지를 출력시키는데, IO_list_all이 수정되었기에 fake _IO_FILE_plus를 실제 File Stream chain으로 인식한다. 이후 이에 대해 _IO_OVERFLOW()를 호출하게 되는데, fake _IO_FILE_plus의 vtable을 참조하기 때문에 RIP를 컨트롤할 수 있다. 말이 너무 길어졌는데, 순서대로 설명하면 아래와 같다. Exploit flow 적당히 큰 free된 청크를 만들기 위해 Top Chunk를 원래..