当前位置: 首页 > wzjs >正文

青岛比较知名的网站建设公司公司电商网站开发方案

青岛比较知名的网站建设公司,公司电商网站开发方案,顺德营销型网站建设,东森推广官网参考文章: tcache - CTF Wiki tcache.md - 知世の小屋 不同版本glibc的堆管理和新增保护机制 - Luexp 1.tcache简介 tcache 是 glibc 2.26 (ubuntu 17.10) 之后引入的一种技术(see commit),目的是提升堆管理的性能。但提升性…

参考文章:

tcache - CTF Wiki

tcache.md - 知世の小屋

不同版本glibc的堆管理和新增保护机制 - Luexp

1.tcache简介

tcache 是 glibc 2.26 (ubuntu 17.10) 之后引入的一种技术(see commit),目的是提升堆管理的性能。但提升性能的同时舍弃了很多安全检查,也因此有了很多新的利用方式。

tcache 引入了两个新的结构体,tcache_entry 和 tcache_perthread_struct

这其实和 fastbin 很像,但又不一样。

tcahe相关结构体

typedef struct tcache_entry {struct tcache_entry *next;
} tcache_entry;/**  tcache_entry 用于链接空闲的 chunk 结构体,其中的 next 指针指向下一个大小相同的 chunk。*  需要注意的是这里的 next 指向 chunk 的 user_data ,而 fastbin 的 fd 指向 chunk 开头(prev_size)的地址。*  而且,tcache_entry 会复用空闲 chunk 的 user_data 部分。*/// tcache_perthread_struct位于堆的开头,大小为0x250。  
typedef struct tcache_perthread_struct {char counts[TCACHE_MAX_BINS];              //用于存放bins中的chunk数量。tcache_entry *entries[TCACHE_MAX_BINS];    //用于存放64个bins地址
} tcache_perthread_struct;

例如在delete一个0x20大小的堆块之后对的结构如下:

可见,系统会把tcache_perthread_struct结构体用一个大小为0x250的chunk存放在堆的开头

 2.27的tcache还有一个特性,那就是所有的bk指针都指向tcache_persread_struct。相当于堆的基地址+

0x10的位置。如下图所示:

相关的源码可以看这篇文章,我这里做一下省流

tcache源码分析

  1. tcache机制的主体是tcache_perthread_struct结构体,其中包含单链表tcache_entry
  2. 单链表tcache_entry,也即tcache Bin的默认最大数量是64,在64位程序中申请的最小chunk size为32,之后以16字节依次递增,所以size大小范围是0x20-0x410
  3. 每一个单链表tcache Bin中默认允许存放的chunk块最大数量是7
  4. 在申请chunk块时,如果tcache Bin中有符合要求的chunk,则直接返回;如果在fastbin中有符合要求的chunk,则先将对应fastbin中其他chunk加入相应的tcache Bin中,直到达到tcache Bin的数量上限,然后返回符合符合要求的chunk
  5. 在释放chunk块时,如果chunk size符合tcache Bin要求且相应的tcache Bin没有装满,则直接加入相应的tcache Bin
  6. 与fastbin相似,在tcache Bin中的chunk不会进行合并,因为它们的pre_inuse位会置成1

tcache相关的检查

 这里重点注意一下tcahe放入和取出的两个函数

/* Caller must ensure that we know tc_idx is valid and there's roomfor more chunks.  */
static __always_inline void
tcache_put (mchunkptr chunk, size_t tc_idx)
{tcache_entry *e = (tcache_entry *) chunk2mem (chunk);assert (tc_idx < TCACHE_MAX_BINS);e->next = tcache->entries[tc_idx];tcache->entries[tc_idx] = e;++(tcache->counts[tc_idx]);
}/* Caller must ensure that we know tc_idx is valid and there'savailable chunks to remove.  */
static __always_inline void *
tcache_get (size_t tc_idx)
{tcache_entry *e = tcache->entries[tc_idx];assert (tc_idx < TCACHE_MAX_BINS);assert (tcache->entries[tc_idx] > 0);tcache->entries[tc_idx] = e->next;--(tcache->counts[tc_idx]);return (void *) e;
}

tcache_put将tcache放入bin中,仅仅只是检查了其大小是否符合tcache。----可以伪造堆块

tcache_get从tcache中获得一个bin,也仅仅检测了大小是否符合tcache以及bin不为空。---没有像fastbin一样检查一下size位,所以只要能篡改fd,就能实现任意地址开chunk

可以看出tcache安全机制特别简单,所以引入了tcache反而使漏洞利用更简单了。

另外,此版本的malloc还没有添加堆地址必须16字节对齐的检查。

free函数的检查更严了。double free行不通了

2.漏洞利用

除了与fastbin通用的一些方法,如uaf,堆溢出,堆重叠等等,tcache特有的一种利用方法叫做tcache投毒。其原理就是劫持tcache的fd指针,从而在tcache_persread_struct开chunk,篡改counts或者entry数组。

篡改counts数组的作用是使得tcache假满,这样的话再free一个堆块就能进入unsorted_bin(大小要大于0x80,不然就进fastbin了)。这种方法常用于,如果题目限制了你开malloc得次数,比如小于7次,那么我们就无法通过正常的多次free来把tcahe填满。

篡改entries是为了能够任意地址开chunk。entry相当于是tcache的入口点,例如你篡改了0x40大小的tcache的entry为addr_1,那么你再malloc(0x30)的时候,就会在addr_1开chunk。


文章转载自:

http://PfroAJg2.dpqqg.cn
http://WLfikvVi.dpqqg.cn
http://qV9jRUCi.dpqqg.cn
http://pxTmhGCe.dpqqg.cn
http://GOGtuRsB.dpqqg.cn
http://uZeD7Mdj.dpqqg.cn
http://6TrUSl7X.dpqqg.cn
http://JhLn26K3.dpqqg.cn
http://cdrAzojI.dpqqg.cn
http://Ux9Y3189.dpqqg.cn
http://MaHRrJwe.dpqqg.cn
http://sg4EjrJl.dpqqg.cn
http://mbdTugMK.dpqqg.cn
http://npDoxa6f.dpqqg.cn
http://FbIgA1HL.dpqqg.cn
http://rOXZtT6L.dpqqg.cn
http://GQvNFenw.dpqqg.cn
http://kgSDX8bv.dpqqg.cn
http://0z7AgsLN.dpqqg.cn
http://tDnN5z1I.dpqqg.cn
http://ZOMh4Oc1.dpqqg.cn
http://IZSvQPLA.dpqqg.cn
http://nNbuqRsf.dpqqg.cn
http://MGADSMXK.dpqqg.cn
http://TcI3HC40.dpqqg.cn
http://x5T4Drrb.dpqqg.cn
http://4kg47IHK.dpqqg.cn
http://isSHl6Om.dpqqg.cn
http://Wekwyt3o.dpqqg.cn
http://d968UTE8.dpqqg.cn
http://www.dtcms.com/wzjs/743249.html

相关文章:

  • 外贸soho建站网站定制
  • 建设网站教程全集怎样做网站标题优化
  • 网站建设子栏目文案设计方案表网站名称
  • 常德网站建设字答科技宿迁盐城网站建设企业
  • 广州黄浦区建设局网站潍坊网站搜索引擎优化
  • 免费制作软件app的网站网站反链暴增怎么回事
  • 深圳 购物网站wordpress无法更换主题
  • 郑州网站优化关键词王也头像男
  • 怎么做本地网站网站代理访问是什么意思
  • 容桂手机网站建设网站ie不兼容
  • 网站建设文档网站备案人的法律风险
  • 烟台网站建设首推企汇互联见效付款大学生创新创业大赛的意义
  • 网站建设 超薄网络设计工作室宣传文案
  • 网站栏目推介怎么做在线3d建模网站
  • 商务网站欣赏网站建设 保障接单 计划
  • 做公司中文网站需要注意什么网站品牌形象设计怎么做
  • 门户网站建设工作wordpress网站之间互联
  • 用dw做网站的好处界面设计的重要性
  • 百度网站怎么做视频公司网站开发方案
  • 高端建站网站设计好看的企业网站
  • 做网站是买服务器还是买主机汕头cms模板建站
  • 公司网站建设推荐乐云seo企业做网站建设遇到的问题
  • 设计工作室的名字超级推荐的关键词怎么优化
  • 宁波网站建设团队佛山vi设计
  • 老干部局网站建设海淘网站入口
  • 各网站提交入口wordpress美图插件
  • 企业网站制作规划甘肃做网站的公司有哪些
  • 广州做企业网站的公司服务器域名是什么
  • 环保网站建设的目的公司网站制作导航
  • 做知识产权服务的网站排版设计