任务 2.c. 运行更复杂的命令
章节大纲
-
在 mysh64.s 中,我们构造了用于 execve() 系统调用的 argv[] 数组。由于我们的命令是 /bin/sh,没有任何命令行参数,因此 argv 数组只包含两个元素:第一个是指向命令字符串的指针,第二个是零。
在本任务中,我们需要运行以下命令,也就是说,我们希望使用 execve() 来执行以下命令,该命令使用 /bin/bash 来执行 "echo hello; ls -la" 指令。
/bin/bash -c "echo hello; ls -la"
在此新命令中,argv 数组应包含以下四个元素,所有这些都需要在 shellcode 里构造。请修改 mysh64.s 并演示执行结果。与往常一样,您的 shellcode 中不能有任何零。
argv[0] = "/bin/bash" 字符串的地址 argv[1] = "-c" 字符串的地址 argv[2] = "echo hello; ls -la" 命令字符串的地址 argv[3] = 0