Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled
0x2 Vuln
the main vuln in this program is in the sym.print_list, it direct print what exactly in the heap. This allow us to have arbitrary read and write in the memory space.
1
sym.imp.printf(*(_obj.booklist + var_4h * 8));
Since all the protection is on, the simplest way to do this program is to overwrite __free_hook to system. Then, when we call free("/bin/sh"), system("/bin/sh") will be called and we will get a shell.