gyctf_2020_document
思路
简单记录一下思路,具体分析可以参考BUUCTF-PWN刷题记录-7
文件保护全开,got 表不可写,那就想办法覆盖 __free_hook 或者 __malloc_hook 。
具体步骤:
- 分配 unsorted bin chunk ,free 进内存,在 fd 指针处踩出 main_arena 地址。由于 chunk 指针没有置 0 ,我们直接 show 这个 chunk 即可泄露 libc 地址。
- 通过堆风水造成堆块重叠,将 chunk 中指向内容的指针改为 free_hook 的地址,通过 edit 将 free_hook 改为 system 地址。
- 在 chunk 上布置 "/bin/sh\x00" ,通过 free 这个 chunk 实现 system("/bin/sh") 拿 shell 。