介绍:在2.29的libc版本中,进行了unsorted bin的双向链表完整性检查。因此unsorted bin attack也就失效了,不过在libc2.29的版本中tcache stashing unlink attack却可以达到类似的效果(在一个任意地址写入一个libc地址)。

阅读全文 »

写在前面:

通过学习house of orange,又对unsorted bin attack以及FSOP有了一些新的理解。说到底house of orange本身的效果很小,但加上两个组合拳(unsorted bin attack和FSOP)则威力就会变的很大。这篇文章我将对这三种手法都详细记录一下原理和利用方式,最后放上例题。

阅读全文 »

io leak

大致原理:

通过篡改_IO_2_1_stdout_结构体中的flags字段和_IO_write_base字段,通过篡改flags字段来绕过一些检查,通过篡改_IO_write_base字段使得系统调用write打印_IO_write_base字段与_IO_write_ptr字段之间的内容泄露出libc地址。

使用前提:

1、程序没有show函数

2、开启了FULL RELRO保护

利用过程:

1、想办法将_IO_2_1_stdout_结构体申请出来。

2、往_IO_2_1_stdout_结构体写入构造好的数据(具体是什么下面会说)。

3、执行任意一个puts函数,就可以将libc地址泄露出来。

阅读全文 »

这两天打 CSAW 又学到了一种新的沙箱逃逸的方法–切换进程的工作模式,使用32位的系统调用号执行系统调用,来绕过原本沙箱禁用掉的系统调用。理解起来倒也不难,但是有几个点需要注意一下,这里详细的记录下利用过程。

阅读全文 »

在PWN的学习过程中,阅读glibc的源代码是一项必备的技能。一方面而言有些问题需要深入到源码中寻找答案,另一方面阅读源码来探究glibc中函数的实现是再合适不过的方法(有很多师傅做了优秀的总结,可不论怎么阅读他人的总结还是不如自己去实际的探究一下),最后一方面,在不断探究和学习源码的过程中其实也在不断的进步并打下基础,如此看来阅读glibc中的源码百利而无一害。但我对于第一次尝试阅读源码的印象颇深,无从下手,不知所措。于是乎我写下了这篇文章,来向当初和我一样入门的师傅们提供一些经验和建议。

阅读全文 »