美文网首页
(pwn)基本ROP的几个例子(二)

(pwn)基本ROP的几个例子(二)

作者: 鸡龙 | 来源:发表于2018-11-15 14:43 被阅读0次


    四、ret2syscall

    点击下载文件rop

    检查保护

    开启了NX保护

    IDA查看代码

    v4相对ebp偏移与上题算法一样,也是十进制下的108,所以需要覆盖的返回地址相对v4偏移112

    这次我们不能直接填充代码,但我们能将系统调用的参数放到对应的寄存器中,执行int 0x80就可以执行放入的调用了

    系统调用evecve(“/bin/sh”,NULL,NULL)来获取shell

    调用时参数

    eax=功能号 evecve为11  所以为0xb

    ebx应指向/bin/sh地址

    ecx,edx为0

    当控制这些寄存器的值时,要使用到gadgets

    由上图可得到,0x080bb196控制eax,0x0806eb90控制ebx,ecx,edx

    再寻找int 0x80的地址

    int 0x80地址为0x08049421

    还需要得到/bin/sh地址

    /bin/sh地址为0x080be408

    payload

    运行


    总结

             NX保护开启时,无法直接植入自己代码来获取shell时需要用到ropgadgets,利用系统调用获取shell。

    参考

              系统调用对应号码

              execve相关

              int 0x80详解

              四种寄存器存放内容


    该文的例子来自CTF Wiki

    相关文章

      网友评论

          本文标题:(pwn)基本ROP的几个例子(二)

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