草庐IT

linux - 如何避免不适合缓冲区的标准输入被发送到 Linux 64 位 Intel (x86-64) 程序集中的 shell

编辑:标题已更改,因为@Gunner指出这不是缓冲区溢出。在Linux64位Intel汇编中使用NR_read从stdin读取用户输入时,我想知道如何避免不适合输入缓冲区的输入被发送到Linuxshell例如。庆典?例如,在这个示例程序中,我定义了一个255字节的输入缓冲区(缓冲区的大小可以是>=1)。超过255字节的输入的其余部分被发送到bash(如果从bash运行),这显然是一个严重的漏洞。在Linux64位程序集中应如何读取输入以避免此漏洞?这是我的代码:[bits64]section.textglobal_start;canbecompiledeg.withnasmoryasm

linux - 如何避免不适合缓冲区的标准输入被发送到 Linux 64 位 Intel (x86-64) 程序集中的 shell

编辑:标题已更改,因为@Gunner指出这不是缓冲区溢出。在Linux64位Intel汇编中使用NR_read从stdin读取用户输入时,我想知道如何避免不适合输入缓冲区的输入被发送到Linuxshell例如。庆典?例如,在这个示例程序中,我定义了一个255字节的输入缓冲区(缓冲区的大小可以是>=1)。超过255字节的输入的其余部分被发送到bash(如果从bash运行),这显然是一个严重的漏洞。在Linux64位程序集中应如何读取输入以避免此漏洞?这是我的代码:[bits64]section.textglobal_start;canbecompiledeg.withnasmoryasm

我可以排除SIGBUS由 "minor page fault"引发吗? (内核日志没有分配失败)

动机我正在努力提高对SIGBUSerrorinXwayland的理解。自2018年2月20日左右以来,FedoraLinux的一些用户已经看到了这一点,这些用户使用Xwayland1.19.6-5.fc27.x86_64和Linux内核4.15.3-300.fc27.x86-64。可悲的是我没有kernel"segfault"logmessage(或SIGBUS的等效项)。Xwayland有一些毫无意义的代码,可以捕获致命信号。但是我可以通过调试coredump看到siginfo,这似乎差不多。定义我了解当虚拟内存的页面在RAM中不可用并且必须从磁盘读取时会发生“主要页面错误”。我想我

我可以排除SIGBUS由 "minor page fault"引发吗? (内核日志没有分配失败)

动机我正在努力提高对SIGBUSerrorinXwayland的理解。自2018年2月20日左右以来,FedoraLinux的一些用户已经看到了这一点,这些用户使用Xwayland1.19.6-5.fc27.x86_64和Linux内核4.15.3-300.fc27.x86-64。可悲的是我没有kernel"segfault"logmessage(或SIGBUS的等效项)。Xwayland有一些毫无意义的代码,可以捕获致命信号。但是我可以通过调试coredump看到siginfo,这似乎差不多。定义我了解当虚拟内存的页面在RAM中不可用并且必须从磁盘读取时会发生“主要页面错误”。我想我

linux - 为什么 golang clone syscall abi 与 x86-64 上的 linux 内核克隆不同

在glibc/sysdeps/unix/sysv/linux/x86_64/clone.S的linux内核克隆abi定义:Thekernelexpects:rax:systemcallnumberrdi:flagsrsi:child_stackrdx:TIDfieldinparentr10:TIDfieldinchildr8:threadpointer在go1.11.5/src/runtime/sys_linux_amd64.s的golang克隆系统调用://int32clone(int32flags,void*stk,M*mp,G*gp,void(*fn)(void));TEXTru

linux - 为什么 golang clone syscall abi 与 x86-64 上的 linux 内核克隆不同

在glibc/sysdeps/unix/sysv/linux/x86_64/clone.S的linux内核克隆abi定义:Thekernelexpects:rax:systemcallnumberrdi:flagsrsi:child_stackrdx:TIDfieldinparentr10:TIDfieldinchildr8:threadpointer在go1.11.5/src/runtime/sys_linux_amd64.s的golang克隆系统调用://int32clone(int32flags,void*stk,M*mp,G*gp,void(*fn)(void));TEXTru

c - 为什么这个 ptrace 程序说系统调用返回了 -38?

与thisone相同除了我正在运行execl("/bin/ls","ls",NULL);。结果显然是错误的,因为每个系统调用都返回-38:[user@test]#./test_tracesyscall59calledwithrdi(0),rsi(0),rdx(0)syscall12returnedwith-38syscall12calledwithrdi(0),rsi(0),rdx(140737288485480)syscall9returnedwith-38syscall9calledwithrdi(0),rsi(4096),rdx(3)syscall9returnedwith-38

c - 为什么这个 ptrace 程序说系统调用返回了 -38?

与thisone相同除了我正在运行execl("/bin/ls","ls",NULL);。结果显然是错误的,因为每个系统调用都返回-38:[user@test]#./test_tracesyscall59calledwithrdi(0),rsi(0),rdx(0)syscall12returnedwith-38syscall12calledwithrdi(0),rsi(0),rdx(140737288485480)syscall9returnedwith-38syscall9calledwithrdi(0),rsi(4096),rdx(3)syscall9returnedwith-38

linux - nasm 和 ld 的 assembly/链接问题

我有一个用nasm编译的示例程序集文件:nasm-felfsyscall.asm这会生成一个syscall.o文件。我尝试将其与ld链接:ld-osyscallsyscall.old命令失败并出现以下错误:ld:i386architectureofinputfile`syscall.o'isincompatiblewithi386:x86-64output但是,如果我这样做ld-osyscallsyscall.o-melf_i386命令成功,我得到一个系统调用可执行文件。发现nasm没有生成x86-64格式的目标代码,我在syscall.asm文件的开头添加了“BITS64”指令。然后

linux - nasm 和 ld 的 assembly/链接问题

我有一个用nasm编译的示例程序集文件:nasm-felfsyscall.asm这会生成一个syscall.o文件。我尝试将其与ld链接:ld-osyscallsyscall.old命令失败并出现以下错误:ld:i386architectureofinputfile`syscall.o'isincompatiblewithi386:x86-64output但是,如果我这样做ld-osyscallsyscall.o-melf_i386命令成功,我得到一个系统调用可执行文件。发现nasm没有生成x86-64格式的目标代码,我在syscall.asm文件的开头添加了“BITS64”指令。然后