tmux+pwndbg代码调试终端美化
​ pwntools是一个挺好用的工具,不过当我尝试在远程调试代码的时候,会遇到调试窗口默认找不到的情况,于是找到了使用tmux作为解决方案,但是tmux没办法很方便的用滚轮翻页,使用起来不是很方便查看内容,再加上tmux的窗格功能让我想要将内容分散到各个地方。一番搜索之后发现splitmind这个项目很合适,gdb调试的时候很方便。但是代码进入的…
House of apple2
利用条件 House of apple的利用条件如下: 程序从main函数返回或能调用exit函数 能泄露出heap地址和libc地址 能使用一次largebin attack apple系列都是对fp->_wide_data的利用,其中apple1可以任意地址写已知值,类似于largebin attack。暂且不提 apple2延续了lar…
House of apple1
其实apple系列都是对fp->_wide_data的利用,apple1可以任意地址写已知值,通过伪造_wide_data变量。另house of apple之前,常用的堆利用手法都有: +--+ house of pig、house of kiwi、house of emma 利用条件 从main返回或调用exit(其实就是利用fclose…
unlink
unlink主要利用从双向链表中取出chunk时的操作,通过伪造fd和bk指向伪造的位置,触发后达成利用的一种手法。 下面是双向链表中取chunk的操作过程 当然,那是没保护情况,现在早就上保护了 // 由于 P 已经在双向链表中(已经被free),所以有两个地方记录其大小,所以检查一下其大小是否一致(size检查) if (__builtin_e…
setcontext
setcontext+orw 大致可以把2.27,2.29做为两个分界点 2.27下的setcontext 内容如图, 作用是通过rdi寄存器里地址来设置各个寄存器的值。该版本下我们通常从setcontext+53开始利用,因为前面的fldenv byte pte [rcx]会导致程序crash。 值得注意的是,mov rcx,[rdi+0A8h]…
请求大小与标准大小
堆溢出的概念是指有任何方法使写入的内容可以溢出堆块申请的内存从而影响到下个堆块中的内容,那么首先我们要学会计算堆块大小 /* pad request bytes into a usable size -- internal version */ //MALLOC_ALIGN_MASK = 2 * SIZE_SZ -1 #define request…