预测urandom的输出
未初始化漏洞--strcat函数溢出
关于tcache stashing unlink attack的学习总结
关于house of orange(unsorted bin attack &&FSOP)的学习总结
关于IO leak的学习总结
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位的系统调用号执行系统调用,来绕过原本沙箱禁用掉的系统调用。理解起来倒也不难,但是有几个点需要注意一下,这里详细的记录下利用过程。
glibc中的源码该怎么读
在PWN的学习过程中,阅读glibc的源代码是一项必备的技能。一方面而言有些问题需要深入到源码中寻找答案,另一方面阅读源码来探究glibc中函数的实现是再合适不过的方法(有很多师傅做了优秀的总结,可不论怎么阅读他人的总结还是不如自己去实际的探究一下),最后一方面,在不断探究和学习源码的过程中其实也在不断的进步并打下基础,如此看来阅读glibc中的源码百利而无一害。但我对于第一次尝试阅读源码的印象颇深,无从下手,不知所措。于是乎我写下了这篇文章,来向当初和我一样入门的师傅们提供一些经验和建议。
IO学习--源码分析fclose函数
之前分析的三个函数文章链接:
这篇是IO函数源码分析四部曲中的最后一个fclose函数(并不是以后不分析了,说实话我感觉分析源码去看看我们平常使用的函数到底是怎么实现的,这个过程很有意思,因此以后有机会的话会再调试一些其他函数,花了四天分析了这四个函数,从最开始分析fopen函数源码的时候懵懵逼逼(那篇文章我基本是纯配合着动态调试才搞懂的整体逻辑),到分析fread函数时对reserve area以及输入和输出缓冲区有了认识,再到基本是对着源码分析的fwrite函数(也是配合着动态调试,不过此时就是静态分析源码为主了),最后到分析fclose函数源码时感觉的异常顺利和自然。真的是分析每个函数时都有不同的感受。