Malloc的深入分析与可利用点分析
不知不觉已经2个月没更BLOG
了,因为这两个月我确实是基本没看过CTF
(一段时间是拿去代练赚我上头消费花掉的神里绫华的嫁妆了,另一段时间则是拿去做开发了)。今天有闲心又把下的题拿出来看了一看,发现别说堆了,我连gdb
怎么用都忘了()
于是下定决心先做点学习笔记。
感觉工程量还是很大的,挖一个坑。
更新日志
2022/05/19
2022/05/22
目 前主要写的是ptmalloc2
,也就是glibc
的堆实现标准。源码在gnu.org可以看到
使用的是93ce3e
这个提交的仓库代码。
在观察源码的过程中,常常需要实战来看代码究竟是怎么运行的。在这里介绍使用glibc
源码调试的方法。
编译安装
在libc source处下载对应版本的源码并解压,修改MAKECONFIG
,添加+cflags += -ggdb3
(可以调试宏)
tar xvf glibc-2.31.tar.gz
cd glibc-2.31
nano MAKECONFIG # ADD `+cflags += -ggdb3`
export glibc_install=$PWD/build/install # path to the dir you want to install, but don't use the root.
./configure --prefix "$glibc_install"
make && sudo make install
更换题目动态解释器
patchelf
patchelf --set-rpath /home/nova/CTF/glibc-all-in-one/source-libs/glib-2.31/build/install/lib --set-interpreter /home/nova/CTF/glibc-all-in-one/source-libs/glibc-2.31/build/install/lib/ld-linux-x86-64.so.2 malloc