为什么这些系统调用什么都不做?
Why do these syscalls do nothing?
我必须编写一些 shellcode,但有一部分不起作用:
0: b0 c9 mov [=10=]xc9,%al
2: cd 80 int [=10=]x80
4: 89 c3 mov %eax,%ebx
6: 89 c1 mov %eax,%ecx
8: b0 cb mov [=10=]xcb,%al
a: cd 80 int [=10=]x80
相当于setreuid(geteuid(),geteuid())
(至少我希望如此)。它不会使程序崩溃或搞砸任何事情,问题是它不会任何事情。例如,我在此之后放置了执行 /bin/sh 的 shellcode,并且 /bin/sh 执行得很好。任何与 setuid 相关的系统调用似乎都没有任何效果。
当我 运行 strace 时,它输出:
syscall_4294957257(0, 0x8048552, 0xffffd875, 0xf7fc7000, 0xf7fc7000, 0xffffd618) = -1 (errno 38)
syscall_4294967243(0xffffffda, 0xffffffda, 0xffffd875, 0xf7fc7000, 0xf7fc7000, 0xffffd618) = -1 (errno 38)
execve("/bin//sh", NULL, NULL) = 0
我得到了 setuid(id)
和 getuid()
相同的输出。所以我想知道的是为什么 strace 将 execve 识别为 execve,而不是其他人。 strace 不应该只识别 setreuid
吗?
一个linux系统调用在x86下从EAX寄存器中读取系统调用号。通过将 C9 移动到 AL,您只设置了 EAX 的低 8 位,其余部分留下垃圾。这就是为什么 strace 调用你所做的 "syscall_4294957257":它是十六进制的 FFFFD8C9。 (请注意,它以 C9 结尾。)这也是为什么您会看到 errno 38
,它转换为 ENOSYS
"function not implemented",或者换句话说,"I don't know what you're asking me to do".
解决方法是在设置al
之前清除eax
,像这样:
31 c0 xor eax,eax
b0 c9 mov al,0xc9
我必须编写一些 shellcode,但有一部分不起作用:
0: b0 c9 mov [=10=]xc9,%al
2: cd 80 int [=10=]x80
4: 89 c3 mov %eax,%ebx
6: 89 c1 mov %eax,%ecx
8: b0 cb mov [=10=]xcb,%al
a: cd 80 int [=10=]x80
相当于setreuid(geteuid(),geteuid())
(至少我希望如此)。它不会使程序崩溃或搞砸任何事情,问题是它不会任何事情。例如,我在此之后放置了执行 /bin/sh 的 shellcode,并且 /bin/sh 执行得很好。任何与 setuid 相关的系统调用似乎都没有任何效果。
当我 运行 strace 时,它输出:
syscall_4294957257(0, 0x8048552, 0xffffd875, 0xf7fc7000, 0xf7fc7000, 0xffffd618) = -1 (errno 38)
syscall_4294967243(0xffffffda, 0xffffffda, 0xffffd875, 0xf7fc7000, 0xf7fc7000, 0xffffd618) = -1 (errno 38)
execve("/bin//sh", NULL, NULL) = 0
我得到了 setuid(id)
和 getuid()
相同的输出。所以我想知道的是为什么 strace 将 execve 识别为 execve,而不是其他人。 strace 不应该只识别 setreuid
吗?
一个linux系统调用在x86下从EAX寄存器中读取系统调用号。通过将 C9 移动到 AL,您只设置了 EAX 的低 8 位,其余部分留下垃圾。这就是为什么 strace 调用你所做的 "syscall_4294957257":它是十六进制的 FFFFD8C9。 (请注意,它以 C9 结尾。)这也是为什么您会看到 errno 38
,它转换为 ENOSYS
"function not implemented",或者换句话说,"I don't know what you're asking me to do".
解决方法是在设置al
之前清除eax
,像这样:
31 c0 xor eax,eax
b0 c9 mov al,0xc9