起了一个比较屌的标题,233。想写这篇文章主要是看了kelwya分析的议题,于是准备自己动手实践一下。蓝莲花的选手真的是国际大赛经验丰富,有很多很多的思路和知识我完全都没有听说过。这篇文章会写一些不常见但是确实出现过Pwn解题思路。

1.fastbin的第三种方式?

我们知道fastbin一般有两种利用方式,通过这两种利用可以实现任意地址分配堆。现在来谈一谈第三种利用方式

  • 概述:基本思路是通过覆写一些值,使本来不在fastbin范围的堆块也被作为fastbin被处理
  • 原理:fastbin在32位下被规定为16~64,在64位下被规定为32~128。但是事实上这个值由一个被称为global_max_fast全局变量控制。只有能够覆写这个全局变量就可以实现让本来不在fastbin范围的堆块被当作fastbin块处理
  • 步骤:
    1. 通过任意地址写,覆写global_max_fast为一个很大的值
    2. 分配两个堆块(大于64byte)
    3. 释放掉高地址的堆块
    4. 通过低地址处的堆块溢出掉高地址堆块的fd指针
    5. 连续分配两次堆块
  • 效果:实现任意大小chunk的任意地址堆分配
  • 实例:PlaidCTF 2014的datastore、HITCON 2015的fooddb、0CTF 2016的Zerostorage
  • Demo:

2.基于堆的off by one

堆的off by one是指当向一个堆块中写入时,因为没有考虑好大小问题。导致一个空字节覆盖到下一个堆块的头部。发生这种情况的原因通常是复制一个字符串到一块堆内存时,如果字符串和堆的大小正好相等,那么就会发生off by one。

  • 概述:一个'\x00'字节溢出导致覆盖掉下一个堆头的size域的最低一个字节。  
  • 原理:堆分配时,往往会少分配4个字节(32位下)。比如用户申请1020个字节,如果按照常理应该是分配1028个字节的,但是实际上却只分配了1024个字      节。1024个字节装不下1028个字节的内容,所以要借用下一个块的prev_size结构的四个字节。这个也就是为什么说,当前一个空闲时,prev_size是前一块的大  小,当前一块使用时,pre_size是前一块的结尾内容。因为这种特殊的内存分配导致了off by one多出的一个'\x00'字节可以覆盖到下一块的size域。
  • 利用:这种漏洞可以导致各种各样、花式花样的overlap

3.待续

CTF内存高级利用技术的更多相关文章

  1. [原创]上海好买基金招高级Java技术经理/运维主管/高级无线客户端开发等职位(内推)

    [原创]上海好买基金招高级Java技术经理/运维主管/高级无线客户端开发等职位(内推) 内部推荐职位 高级JAVA技术经理: 岗位职责: 负责项目管理(技术方向),按照产品开发流 ,带领研发团队,制定 ...

  2. Windows漏洞利用技术概述

    Windows漏洞利用技术总结 1. 前言 本文是我对漏洞利用技术的学习总结,也是自己践行QAD (Questions.Answer.Discussions)的一次实践.本文通过阅读几位大牛的文章.演 ...

  3. [_CN] Eclipse精要与高级开发技术 note

    一 eclipse是基于java的 ide ,但根据其体系结构,开发插件,也可拓展到其他语言———————— 尽管如此,但还是很少听说用eclipse来写php或者c的 跨os 三个项目:eclips ...

  4. XSS的高级利用部分总结 -蠕虫

    XSS的高级利用部分总结 -蠕虫,HTTP-only,AJAX本地文件操作,镜象网页本帖最后由 racle 于 2009-5-30 09:19 编辑 XSS的高级利用总结 -蠕虫,HTTPONLY,A ...

  5. 个人理解的Windows漏洞利用技术发展史

    大概四.五年前,看过陈皓的酷壳上面的一篇文章,上面有一句话我一直记得,是关于学习技术的心得和态度的. 要了解技术就一定需要了解整个计算机的技术历史发展和进化路线.因为,你要朝着球运动的轨迹去,而不是朝 ...

  6. iPhone之IOS5内存管理(ARC技术概述)

    ARC(Automatic Reference Counting )技术概述 此文章由Tom翻译,首发于csdn的blog,任何人都可以转发,但是请保留原始链接和翻译者得名字.多谢! Automati ...

  7. 引用面试官文章 :如何准备Java初级和高级的技术面试

    本人最近几年一直在做java后端方面的技术面试官,而在最近两周,又密集了面试了一些java初级和高级开发的候选人,在面试过程中,我自认为比较慎重,遇到问题回答不好的候选人,我总会再三从不同方面提问,只 ...

  8. 微信团队原创分享:iOS版微信的内存监控系统技术实践

    本文来自微信开发团队yangyang的技术分享. 一.前言 FOOM(Foreground Out Of Memory),是指App在前台因消耗内存过多引起系统强杀.对用户而言,表现跟crash一样. ...

  9. Linux环境下常见漏洞利用技术(培训ppt+实例+exp)

    记得以前在drops写过一篇文章叫 linux常见漏洞利用技术实践 ,现在还可以找得到(https://woo.49.gs/static/drops/binary-6521.html), 不过当时开始 ...

随机推荐

  1. 实用 zsh 插件

    zsh 命令补全插件 zsh-users/zsh-autosuggestions laravel5(使用前提:安装了 oh-my-zsh) 使用方法,修改 ~/.zshrc,在 plugins 里面加 ...

  2. etcd启用https服务

    目录 cfssl相关工具下载 生成etcd所需要的ssl证书 生成ca证书 生成etcd服务端证书 生成etcd客户端证书 修改etcd集群配置文件 重启etcd集群 验证集群健康情况 关于etcd的 ...

  3. vue的props和$attrs

    过去我们在vue的父子组件传值的时候,我们先需要的子组件上用props注册一些属性: <template> <div> props:{{name}},{{age}} 或者 {{ ...

  4. Android的taskAffinity对四种launchMode的影响

    在Android系统中,一个application的所有Activity默认有一个相同的affinity(亲密关系,相似之处).也就是说同一个应用程序的的所有Activity倾向于属于同一个task. ...

  5. NOIP2011 提高组 Day1

    自测:8:27——11:51 实际得分:100+60+20=180 期望得分:100+60+40=200 T3读错题,失20 http://cogs.pro/cogs/page/page.php?ai ...

  6. 高维数据降维 国家自然科学基金项目 2009-2013 NSFC Dimensionality Reduction

    2013 基于数据降维和压缩感知的图像哈希理论与方法 唐振军 广西师范大学 多元时间序列数据挖掘中的特征表示和相似性度量方法研究 李海林 华侨大学       基于标签和多特征融合的图像语义空间学习技 ...

  7. SpringBoot 线程池配置 实现AsyncConfigurer接口方法

      目的是:  通过实现AsyncConfigurer自定义线程池,包含异常处理  实现AsyncConfigurer接口对异常线程池更加细粒度的控制 *a) 创建线程自己的线程池  b) 对void ...

  8. js延迟几秒执行

    var t=setTimeout("location.reload()",5000);

  9. c++刷题(18/100)树

    题目1:二叉搜索树的第k个节点 给定一颗二叉搜索树,请找出其中的第k小的结点.例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4. 思路:因为是二叉搜索树 ...

  10. EOJ Monthly 2019.2 (based on February Selection) D.进制转换

    题目链接: https://acm.ecnu.edu.cn/contest/140/problem/D/ 题目: 思路: 我们知道一个数在某一个进制k下末尾零的个数x就是这个数整除kx,这题要求刚好末 ...