其他分享
首页 > 其他分享> > pwn-64和32位ROP以及system与execve的差别

pwn-64和32位ROP以及system与execve的差别

作者:互联网

①:ROP位数差别 

这篇文章讲的很细: 

(1条消息) [CTF pwn]傻傻分不清的execve、int80、syscall、system及shellcode_漫小牛的博客-CSDN博客

核心区别就是:
对于32位和64位,要遵循各自的调用约定,32位时摆在栈空间,64位时放在rdi寄存器。

②:system与execve 

参见这篇详细的讲解文章:

(1条消息) [CTF pwn]傻傻分不清的execve、int80、syscall、system及shellcode_漫小牛的博客-CSDN博客

关键点就是:

  1. execve(“/bin/sh”,0,0)是个系统调用,执行后,即使他发生在某个线程中,整个进程的程序也会被换掉,但进程号保留。
  2. system(“/bin/sh”)是个库函数,背后的系统调用是:fork + execve + waitpid,所以启动的shell是一个新的进程,老进程还在。也正因为waitpid,所以system才会卡住。

对于system的调用:以下两种方法均可以:

        1. system(“/bin/sh”)
        2. system(“sh”)
        第一种是使用/bin下的sh,第二种是通过环境变量找sh。

标签:bin,32,system,pwn,sh,ROP,execve
来源: https://blog.csdn.net/hacker_zrq/article/details/120616853