CTF之堆溢出-unlink原理探究


来干!来干!
转战堆溢出,这东东确实接触的很少,听说很神奇很细腻。我也是初次接触就和大家一起共同学习下,也填补下这方面的空白。

https://sploitfun.wordpress.com/2015/02/26/heap-overflow-using-unlink/

这篇文章讲的就是堆溢出的原理,不过全是英文,估计。。。慢慢看,不急。我就结合着它给的示例程序来分析下原理,以及如何利用堆溢出。如有不妥之处,还望及时批评指正!

/* 
 Heap overflow vulnerable program. 
 */
#include <stdlib.h>
#include <string.h>

int main( int argc, char * argv[] )
{
        char * first, * second;

/*[1]*/ first = malloc( 666 );
/*[2]*/ second = malloc( 12 );
        if(argc!=1)
/*[3]*/         strcpy( first, argv[1] );
/*[4]*/ free( first );
/*[5]*/ free( second );
/*[6]*/ return( 0 );
}

这就是存在堆溢出的程序了,很明显好不啦。

堆确实很难。整了好久没整出来。多亏了在师傅的帮助下,终于把unlink给整明白了。(为了记录下学习的过程,前面的内容我就不删了)

先来推荐几篇文章,主要是看一下原理,虽然我知道即使看懂了,但是利用它时还是一脸懵比。

http://www.freebuf.com/news/88660.html

http://www.freebuf.com/vuls/98404.html

这是一道很经典的unlink,希望从此叩开堆溢出的大门(需要程序的在下方留个言)
由于调试堆的题目需要注意很多细节,而这些细节对于一个有栈经验的选手来说应该不难懂,所以我就不会说的太明白。我主要是分析一下unlink那块代码。
按着我的习惯,先检查一下。
这里写图片描述
和堆有关的保护我也不清楚 ,我就不班门弄斧了。
试运行一下程序。这种结构很明显是个堆题。

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值