pwnable.tw之hacknote

  uaf漏洞产生的主要原因是释放了一个堆块后,并没有将该指针置为NULL,这样导致该指针处于悬空的状态(有的地方翻译为迷途指针),同样被释放的内存如果被恶意构造数据,就有可能会被利用。

再怎么表述起始还不如真的拿一道题自己调自己看内存看堆状态来的好理解。这也是我觉得ctf-pwn的意义所在,可以把一些漏洞抽象出来以题的形式,作为学习这方面的一个抓手。

此篇尽量做的细致基础,但仍然假设读者已经初步了解uaf能够实现exploit的原理,例如malloc的内存优先分配机制。

当然作为一个小白,还是从一些比较直白漏洞利用单一一些的题目来理解uaf的利用姿势。

pwnable.kr这个网站基本满足这种单一直白,代码量不多也基本不需要多个漏洞一起搞,就是服务经常挂。上面有一道uaf的题,好像是利用c++虚函数表搞的

exploit-exercise也不错,不过后面的题目调试起来比较麻烦。

pwnable.tw比较难,可以作为进阶练习。

感觉如果想找一个题目作为开始,TU-CTF PWN  woO这道五十分的题基本没什么坑,可以作为理解用。

这次分析一下pwnable.tw的这道hacknote,相比2016湖湘的fheap而言这道题算是纯uaf利用了,做个记录也帮助进一步理解uaf的姿势>

pwnable.tw之hacknote_第1张图片

0x0 程序分析

丢到ida里面看下:

pwnable.tw之hacknote_第2张图片

add note功能:

pwnable.tw之hacknote_第3张图片

可以看到首先为ptr+note_offset 使用malloc分配了8字节的内存,分别存放函数地址0x804862b(打印content的内容)和一个指向当期那note内容content的指针。

之后会请用户输入content的size和content的内容。这里涉及到malloc分配内存时的内存对齐。

0x1 malloc内存对齐

你可能感兴趣的:(ctf,pwn,uaf,malloc)