fastbin2 pwnable.kr uaf [Toddler's Bottle] uaf uaf.cpp 코드의 일부이다. give_shell() 함수를 호출할 수 있으면 될 것으로 보인다. 아래는 main() 코드이다. 이 때, switch문의 case 2를 이용하면 uaf가 가능할 듯하다. gdb로 보면 fastbin에 들어가는 것을 볼 수 있다. 따라서 argv[1]으로 같은 크기를 주고 실행한 뒤3 -> 2 순으로 입력하여 free로 인해 반환된 메모리를 다시 할당받으면 된다.이제 해당 메모리에 덮어쓸 데이터만 결정하면 된다. 이 때, 다시 uaf.cpp 코드를 보면 give_shell()과 introduce()가 virtual 함수인 것을 볼 수 있다.free하기 이전의 힙 상태를 다시 보면 아래와 같다. vtable의 주소가 담겨 있는 것을 .. 2019. 2. 21. 화이트햇 2016 malloc 우선 malloc을 실행해보면, 아래와 같은 메뉴를 볼 수 있다. 이 때 free한 뒤에도 modify가 가능하다. 그 이유는 malloc시 chunk_list에 넣고, modify 시에도 chunk_list에서 수정할 주소를 얻어오는데free할 때 chunk_list에서 삭제하지 않기 때문이다. 따라서 이번 문제는 malloc한 뒤 free하여 fastbin에 들어가게 한 뒤, fd에 스택 값을 넣고 ret를 덮으면 풀 수 있다.더 자세히 쓰면 아래와 같다. malloc 32, 'a'*31malloc 32, 'b'*31 free 1free 2 modify 2, stack_addr malloc 32, 'c'*31malloc 49, 'd'*24 + RET malloc 하는 size는 32로 같게 하였다.먼.. 2019. 2. 10. 이전 1 다음