花了半天的时间去理解吃透这道题目,也参考了大佬的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)

最新文章

  1. tomcat的安全配置(禁用http方法,部署多个应用,启用从安全cookie,指定错误页面和显示信息)
  2. 2015-12-23-( dispaly:table的用法)
  3. Gulp构建前端自动化项目
  4. asp.net LINQ数据访问技术from where select order by子句
  5. backbone库学习-Router
  6. Wee – 为现代 Web 开发打造的 CSS 脚手架
  7. C# 字符串替换Replace
  8. 迅为iTOP-4418开发板兼容八核6818开发板介绍
  9. SQLServer数据库的一些全局变量
  10. 菜单滑动-menu swipe
  11. 点击itemView选中checkbox
  12. TTS异步+同步
  13. Linux---江湖
  14. 前端css:“圣杯布局”
  15. JPG、PNG和GIF图片的基本原理及优…
  16. 实战:通过ViewModel规范TableView界面开发
  17. python编码详解--转自(Alex的博客)
  18. 20155208徐子涵 Exp5 MSF基础应用
  19. uart通讯协议
  20. 【转】使用SevenZipSharp压缩、解压文件

热门文章

  1. Springboot 加载配置文件源码分析
  2. [cf1326F]Wise Men
  3. [atARC102F]Revenge of BBuBBBlesort
  4. 实用QPS和TPS高的高效分析方法
  5. 【Vue.js】SPA
  6. ICCV2021 | Swin Transformer: 使用移位窗口的分层视觉Transformer
  7. Redis概述以及Linux安装
  8. CF1477A Nezzar and Board
  9. 2基因组间鉴定SV
  10. void * 指针和const 指针