SWPUCTF_2019_p1KkHeap(tcache_entry)

发布时间:2022-07-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了SWPUCTF_2019_p1KkHeap(tcache_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如下

SWPUCTF_2019_p1KkHeap(tcache_entry)

 

 

 

 tcache_entry的偏移如下

 

SWPUCTF_2019_p1KkHeap(tcache_entry)

 

 

SWPUCTF_2019_p1KkHeap(tcache_entry)

 

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

SWPUCTF_2019_p1KkHeap(tcache_entry)

 

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

成功获得flag

SWPUCTF_2019_p1KkHeap(tcache_entry)

 

 

 

 结束!!!!

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

脚本宝典总结

以上是脚本宝典为你收集整理的SWPUCTF_2019_p1KkHeap(tcache_entry)全部内容,希望文章能够帮你解决SWPUCTF_2019_p1KkHeap(tcache_entry)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。