CTF内存高级利用技术
起了一个比较屌的标题,233。想写这篇文章主要是看了kelwya分析的议题,于是准备自己动手实践一下。蓝莲花的选手真的是国际大赛经验丰富,有很多很多的思路和知识我完全都没有听说过。这篇文章会写一些不常见但是确实出现过Pwn解题思路。
1.fastbin的第三种方式?
我们知道fastbin一般有两种利用方式,通过这两种利用可以实现任意地址分配堆。现在来谈一谈第三种利用方式
- 概述:基本思路是通过覆写一些值,使本来不在fastbin范围的堆块也被作为fastbin被处理
- 原理:fastbin在32位下被规定为16~64,在64位下被规定为32~128。但是事实上这个值由一个被称为global_max_fast全局变量控制。只有能够覆写这个全局变量就可以实现让本来不在fastbin范围的堆块被当作fastbin块处理
- 步骤:
- 通过任意地址写,覆写global_max_fast为一个很大的值
- 分配两个堆块(大于64byte)
- 释放掉高地址的堆块
- 通过低地址处的堆块溢出掉高地址堆块的fd指针
- 连续分配两次堆块
- 效果:实现任意大小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内存高级利用技术的更多相关文章
- [原创]上海好买基金招高级Java技术经理/运维主管/高级无线客户端开发等职位(内推)
[原创]上海好买基金招高级Java技术经理/运维主管/高级无线客户端开发等职位(内推) 内部推荐职位 高级JAVA技术经理: 岗位职责: 负责项目管理(技术方向),按照产品开发流 ,带领研发团队,制定 ...
- Windows漏洞利用技术概述
Windows漏洞利用技术总结 1. 前言 本文是我对漏洞利用技术的学习总结,也是自己践行QAD (Questions.Answer.Discussions)的一次实践.本文通过阅读几位大牛的文章.演 ...
- [_CN] Eclipse精要与高级开发技术 note
一 eclipse是基于java的 ide ,但根据其体系结构,开发插件,也可拓展到其他语言———————— 尽管如此,但还是很少听说用eclipse来写php或者c的 跨os 三个项目:eclips ...
- XSS的高级利用部分总结 -蠕虫
XSS的高级利用部分总结 -蠕虫,HTTP-only,AJAX本地文件操作,镜象网页本帖最后由 racle 于 2009-5-30 09:19 编辑 XSS的高级利用总结 -蠕虫,HTTPONLY,A ...
- 个人理解的Windows漏洞利用技术发展史
大概四.五年前,看过陈皓的酷壳上面的一篇文章,上面有一句话我一直记得,是关于学习技术的心得和态度的. 要了解技术就一定需要了解整个计算机的技术历史发展和进化路线.因为,你要朝着球运动的轨迹去,而不是朝 ...
- iPhone之IOS5内存管理(ARC技术概述)
ARC(Automatic Reference Counting )技术概述 此文章由Tom翻译,首发于csdn的blog,任何人都可以转发,但是请保留原始链接和翻译者得名字.多谢! Automati ...
- 引用面试官文章 :如何准备Java初级和高级的技术面试
本人最近几年一直在做java后端方面的技术面试官,而在最近两周,又密集了面试了一些java初级和高级开发的候选人,在面试过程中,我自认为比较慎重,遇到问题回答不好的候选人,我总会再三从不同方面提问,只 ...
- 微信团队原创分享:iOS版微信的内存监控系统技术实践
本文来自微信开发团队yangyang的技术分享. 一.前言 FOOM(Foreground Out Of Memory),是指App在前台因消耗内存过多引起系统强杀.对用户而言,表现跟crash一样. ...
- Linux环境下常见漏洞利用技术(培训ppt+实例+exp)
记得以前在drops写过一篇文章叫 linux常见漏洞利用技术实践 ,现在还可以找得到(https://woo.49.gs/static/drops/binary-6521.html), 不过当时开始 ...
随机推荐
- php 中 envoy 的使用方法
相关文档:中文文档.英文文档 envoy 是什么? envoy 是一个支持 blade 语法的 ssh 远程命令执行的工具.具体来说就是,通过配置 ssh 的账号.密码.key 这些,然后可以使用 e ...
- 【Asp.net入门05】第一个ASP.NET 应用程序-测试Asp.net程序
测试示例应用程序 本部分内容: ASP.NET应用程序测试方法 web窗体访问过程 Visual Studio工具栏上有一个下拉列表,其中列出了工作站上已安装的浏览器的名称(单击浏览器名称右侧的向下箭 ...
- django中模板变量与内置标签以及过滤器
本文参考 官方文档 . 一 模板变量 格式: {{ variable_name }} variable_name 命名规则与变量命名规则类似,允许字符数字下划线,不允许标点. variable_ ...
- HTML常用标签-<body>内基本标签(块级标签和内联标签)
HTML常用标签-<body>内基本标签(块级标签和内联标签) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.<hn>系列标签 n的取值范围是1~6,从 ...
- Django 2.0.1 官方文档翻译: 编写你的第一个 Django app,第五部分(Page 10)
编写你的第一个 Django app,第五部分(Page 10)转载请注明链接地址 我们继续建设我们的 Web-poll 应用,本节我们会为它创建一些自动测试. 介绍自动测试 什么是自动测试 测试是简 ...
- HBase基本概念
HBase是什么 HBase构建在 HDFS 之上的分布式列式键值存储系统.HBase内部管理的文件全部存储在HDFS中. HBase VS HDFS HDFS适合批处理场景 不支持数据随机查找 不适 ...
- 经典幻灯片插件Swiper
照着写的demo,搞清楚什么叫分页器Pagination,什么叫nav,搞清楚DOM结构,container,wrapper之类的,就能写了.效果掉渣天! <!DOCTYPE html> ...
- ul标签的高度为0
由于项目中使用ul+li的布局方式,在ie8.chrome浏览器中,包裹浮动的li元素的外层ul高度为0,ie7浏览器和ie8兼容模式显示正常,这是典型的浏览器兼容性问题. 解决办法: 第一种:设置u ...
- Spring Cloud(十一)声名式服务调用:Feign的使用 (上)
一.写在前边 最近开发任务比较忙,下班也开始锻炼了,这个系列的文章就放了很久,看github我提交的Feign的入门程序已经好久了,今天正好得空,这就更上一贴,准备分几部分写 注意:之前几个项目中,笔 ...
- python json 访问与字符串截取
# req = requests.Request(url=url, headers=headers, data=data) # html = requests.get(req) # print(htm ...