[dreamhack] fho
·
dreamhack
배경 개념c 언어에서 메모리의 동적 할당과 해제를 담당하는 함수에는 malloc, free, realloc 등이 있다. 이 함수들은 libc.so에 구현되어 있다. libc에는 이 함수들의 디버깅 편의를 위해 훅 변수가 정의되어 있다. malloc 함수는 __malloc_hook을, free 함수는 __free_hook, realloc 함수는 __realloc_hook이라는 훅 변수를 사용한다. 이 함수들은 libc.so의 bss 및 data 섹션에 포함된다. bss, data 섹션은 쓰기가 가능하므로, 실행 중에 조작이 가능하다.훅을 실행할 때 기존 함수에 전달한 인자를 그대로 전달해주기 때문에 __malloc_hook을 system 함수의 주소로 덮고, malloc("/bin/sh")를 호출해서 쉘..