execve相关内容

如果不将0作为execve的环境指针传递,为什么这个外壳代码会起作用?

https://www.exploit-db.com/exploits/46907 我的理解是,由于x64调用约定,execve的第三个参数envp应该存储在RDX中。但是这个外壳代码不会将该寄存器置零,它只会将RSI寄存器(存储ARV)置零。因此,如果RDX的当前值未指向有效位置,则会导致段错误,不是吗? 我是否遗漏了什么? 推荐答案 写rdx(带0):注意syscall ..
发布时间:2022-04-18 11:05:29 服务器开发

“没有这样的文件或目录"执行二进制文件时出错

我在 Ubuntu 9.10 x86_64 上安装了一个二进制 Linux 应用程序.该应用程序附带了旧版本的 gzip (1.2.4),该版本是为更旧的内核编译的: $ 文件 gzipgzip:ELF 32 位 LSB 可执行文件,Intel 80386,版本 1 (SYSV),动态链接(使用共享库),用于 GNU/Linux 2.0.0,已剥离 我无法执行此程序.如果我尝试过,就会发生这种 ..
发布时间:2022-01-06 12:35:10 服务器开发

程序集执行/bin/bash (x64)

我是 asm 的新手,我正在尝试对/bin/bash 执行系统调用.但是我目前遇到以下问题: 我的代码适用于第一个参数长度小于 8 个字节的任何 execve 调用,即“/bin/sh"或“/bin/ls": .section .data名称:.string "/bin/sh".section .text.globl _start_开始:#execve 的第三个参数,设置为 NULL异或 ..
发布时间:2021-11-25 07:44:54 C#

程序集执行/bin/bash (x64)

我是 asm 的新手,我正在尝试对/bin/bash 执行系统调用.但是我目前遇到以下问题: 我的代码适用于第一个参数长度小于 8 个字节的任何 execve 调用,即“/bin/sh"或“/bin/ls": .section .data名称:.string "/bin/sh".section .text.globl _start_开始:#execve 的第三个参数,设置为 NULL异或 ..
发布时间:2021-09-04 18:43:32 其他开发

指向没有 .data 部分的独立二进制代码中的字符串的指针

我正在尝试编写某种漏洞利用程序,但在使我的 asm 代码在堆栈上的任何位置运行时遇到了问题.就是这样: BITS 64全局_start_开始:mov rax, 59jmp 短文件c1:流行音乐jmp 短 argvC2:流行音乐移动 rdx, 0系统调用回复文件:呼叫 c1数据库 '/bin/sh',0argv:呼叫 c2dq arg, 0 由于选择了行,此代码在堆栈上的任何地方都不起作用,因 ..
发布时间:2021-06-07 18:41:27 其他开发

函数execve的实现(unistd.h)

我怎样才能看到execve函数的实现(在x86_64 Linux下),它在未分配的库中?我想要这个,是因为我想知道如何使用汇编器来调用外部程序,而无需调用execve.我知道有一个名为execve的系统调用,但是我不知道如何使用它. 如何将char *类型和char * []类型的变量放入寄存器? 解决方案 仅查看内核源代码(更具体地说:arch/YOUR-ARCH/kernel/h ..
发布时间:2021-05-29 23:04:57 服务器开发

execve()无法在C中启动程序

我正在尝试使用Linux上 unistd.h 中的 execve()生成新进程.我尝试将以下参数传递给它 execve("/bin/ls","/bin/ls",NULL); ,但没有结果.我也没有收到错误,程序刚刚退出.有这种情况发生的原因吗?我尝试过以root和普通用户身份启动它.我需要使用 execve()的原因是因为我正在尝试使其在像这样的程序集调用中工作 程序:db"/bin/ls",0 ..
发布时间:2021-05-06 18:57:22 服务器开发

使用参数调用Unix外部命令

我找到了一种不带参数(例如"ls","pwd")调用unix外部命令的方法.就像这样: //Child process char cwd[1024]; getcwd(cwd, sizeof(cwd)); char *argv[] = {*args, NULL}//(ex.) {"ls", NULL} char *env[] = {cwd, NULL}; //concat():method t ..
发布时间:2020-11-02 00:52:51 服务器开发

执行路径搜索?

我想从我的代码中执行一个程序,并为其提供环境变量和参数. AFAICT,execve是正确的选择. 但是,execve收到一个path参数,而不是filename,这意味着它希望第一个参数是可执行文件的路径. 我知道我可以自己解析$PATH来找到路径,但实际上,别无选择吗?没有其他人可以在我某个地方实现它了吗? 解决方案 某些系统可能会提供execvpe(). Google搜索 ..
发布时间:2020-11-02 00:31:10 其他开发

C-通过执行传递管道

我正在为一个学校项目工作,我不确定我尝试解决该问题的方法是否可行.该项目涉及编写一个程序,派生2个孩子,然后必须用其他程序替换他们的pid,并使2个孩子通过使用read()和write()通过管道进行交谈. 我的问题是使用execve并将管道通过传递给那个孩子.我现在所拥有的是这样: 父程序-分叉并让子调用execve: #include #include ..
发布时间:2020-05-28 00:25:03 其他开发

了解执行和设置环境变量的要求

我们在解释老师方面遇到很多麻烦.我们要求澄清,并从他那里得到了以下答复 对于execve,向其发送一个使用导出的变量设置的环境,并创建一个内置命令以生成/bin/bash的子外壳,这样您就可以使用env查看导出的变量. (他正在谈论在这里创建我们自己的环境变量.) 是的,请创建您自己的.您可以从启动外壳程序时复制环境开始,然后仅添加导出的变量 这与我的以下有关Stack O ..
发布时间:2020-05-25 02:36:29 其他开发

尽管缺少基于文件系统的功能,如何执行流程并保留功能?

我想使系统在没有setuid和文件"+ p"功能的情况下可用,并且通常没有在设置使用这种方法(init设置PR_SET_NO_NEW_PRIVS和基于文件系统的功能提升不再可能),您不能“重新填充"您的功能,而只需要注意不要“散布"它们. 如何在不“散布"任何授予的功能(例如,新程序的文件为setcap =ei)的情况下如何进行其他操作?只是“我相信这个新过程就像我相信自己一样".例如,为用 ..
发布时间:2020-05-01 09:08:01 服务器开发