ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SWPUCTF_2019_p1KkHeap(tcache_entry)

2021-09-25 22:02:44  阅读:292  来源: 互联网

标签:tcache chunk 申请 free p1KkHeap flag 2019 entry


花了半天的时间去理解吃透这道题目,也参考了大佬的wp

(1条消息) 【pwn】SWPUCTF_2019_p1KkHeap_Nothing-CSDN博客

(1条消息) swpuctf2019 p1KkHeap 详细题解_seaaseesa的博客-CSDN博客

有关程序的分析我就不说了,只讲述做题目的思路

因为这道题目的限定,常规的tcachebin攻击肯定不行了所以我们需要新的思路

 

因为在c语言中,无符号的数和有符号的数比较,会将有符号的数字转换为无符号的

所以当我们在tcache申请一个chunk的时候,通过double free释放同一个chunk的时候count=2

而我们继续申请三个同样大小的chunk的时候count=-1,tcache会判断大于7下一个free的chun会放入unsorted bin里面从而获取到libc版本

 

关于tcache_entry

因为我们需要攻击malloc_hook和0x66660000这俩个地方,常规的办法不足以支撑我们同时攻击,所以需要我们攻击tcache_entry这个地方

tcache_entry就是tcache bin的表头,当我们修改了这个地方的值,申请的下一个chunk就是我们修改的这个地方从而实现了攻击

而tcache_entry一般在tcache bin头部的中间某个地方,所以我们可以通过偏移来修改这个地方

这道题目的思路到现在就梳理完毕了:

  申请俩个chunk,double free 再申请3个chunk获得libc的基值修改malloc_hook为0x66660000的值,在此期间,向0x66660000的地方写入shellcode 在申请一个chunk触发hook拿到flag

完整exp如下

 

 

 

 tcache_entry的偏移如下

 

 

 

 

 可以看到我们free的chunk的fd在这个地方,所以这里就是 tcache_entry的地址

 

 别忘了地址多加一个0x8的偏移

成功获得flag

 

 

 

 结束!!!!

(这个flag是我后来本地调试自己加的flag)

标签:tcache,chunk,申请,free,p1KkHeap,flag,2019,entry
来源: https://www.cnblogs.com/zhuangzhouQAQ/p/15335718.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有