pwn无法入门7-UAF

Author Avatar
Aryb1n 6月 09, 2017

hhh

很明显我还没学会

只是在网上看到一个大佬写的

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main() {
    char * p1;
    p1 = (char *)malloc(sizeof(char) * 10);
    memcpy(p1, "hello", 10);
    printf("p1 addr: %p, %s\n", p1, p1);
    free(p1);
    char * p2;
    p2 = (char *)malloc(sizeof(char) * 10);
    memcpy(p2, "world", 10);
    printf("p2 addr: %p, %s\n", p2, p1);
    return 0;
}

就是p1释放之后,p2申请同样大小的堆块的时候会把原来p1的那块给他
应该就是fastbin上分过来的吧

又找到几篇文章

http://www.cnblogs.com/Ox9A82/p/5865420.html
http://www.vuln.cn/6653 (只想说这个,我没看懂)
http://www.vuln.cn/6654 (http://whereisk0shl.top/myarticle 里提到的原来在wooyun的文章)

虽然没看懂,但几下关键词fake chunk
他这个pwn mefastbin
对于free掉的fastbin块,原来data区域的开头的几个字节现在是放了fd指针
这道题目中这个fd的位置在还没有释放的时候存的是结构体的rank,所以要通过rank来泄露堆地址

后面的我是真的看不懂的了,我好菜啊==

参考(还没看)

http://www.freebuf.com/articles/web/69260.html
http://bobao.360.cn/ctf/learning/149.html
http://www.cnblogs.com/0xJDchen/p/6175651.html

还找到这样一个

https://github.com/shellphish/how2heap