Pwnable.tw hacknote
简单菜单题,提供了一种利用思路
程序的独特之处在于在malloc新堆之前会先malloc(8)(我就称它为lead)过来存放puts的函数指针和解下来malloc得到的ptr
show()函数则是通过调用该位置的函数指针来进行打印
1 | printf("Index :"); |
显而易见,只要修改存在与堆上的函数指针为system,再show即可完成利用。
程序还存在UAF,对我们来说是个好消息。
先利用堆分配得到chunk0对应的lead,改heap_ptr为printf_got,show(0)得到libc地址,然后同样方法得到lead,改puts的函数指针为system,heap_ptr为”||sh”,’||’用来于完成参数的截断,之后show拿到shell🚩
1 | from pwn import * |
200分的题相对容易点,后面就难起来了🌩