house of orange의 핵심은 1. 먼저 top chunk의 크기를 본래 크기보다 속여서 크기가 크고 free된 청크를 만들어냅니다. 2. 그리고 가짜 _IO_FILE_PLUS와 _IO_wide_data 구조체를 만듭니다. 3. _IO_list_all을 가짜 구조체의 포인터가 있는 주소로 덮어씁니다. 4. 메모리 손상을 일으킵니다. 5. 그럼 _IO_flush_all_lockup()을 호출하게 됩니다. 그런데 이것은 3번에 의해 변경된 값을 참조하게 됩니다. 6. _IO_OVERFLOW()를 호출하게 되는데 이 주소값은 우리가 2번 과정으로 변조한 값이 됩니다. (ex : one_gadget으로 덮을시에 쉘) 처음 보시면 잘 이해가 안되실 수 있습니다. 고로 첫번째부터 차근 차근 알려드리겠습니다...