System() возвращает ошибку sh: 1:: not Found, когда я пытаюсь выполнить ее с помощью «/bin/sh» в регистре rdiLinux

Ответить Пред. темаСлед. тема
Anonymous
 System() возвращает ошибку sh: 1:: not Found, когда я пытаюсь выполнить ее с помощью «/bin/sh» в регистре rdi

Сообщение Anonymous »

Я слежу за прохождением коробки на VulnHub, The Planets: Venus.
Я заставил оболочку работать при переполнении буфера, добавив 8-байтовое дополнение, гаджет (pop rdi; ret), адрес, указывающий на «/bin/sh», и адрес system() в стеке.
Проблема возникла, когда я отправил «/bin/ ш" в полезной нагрузке раньше всех остальных полезные данные и попытался выполнить system() с этим адресом в rdi.

Код: Выделить всё

Breakpoint 2.1, __libc_system (line=0x7ffff7dcb42f "/bin/sh") at ../sysdeps/posix/system.c:202
202     in ../sysdeps/posix/system.c
(gdb) i r
rax            0x1                 1
rbx            0x7fffffffdae8      140737488345832
rcx            0x7ffff7d1c574      140737351107956
rdx            0x0                 0
rsi            0x4052a0            4215456
rdi            0x7ffff7dcb42f      140737351824431
rbp            0x0                 0x0
rsp            0x7fffffffd578      0x7fffffffd578
r8             0x0                 0
r9             0x0                 0
r10            0x0                 0
r11            0x202               514
r12            0x1                 1
r13            0x0                 0
r14            0x0                 0
r15            0x7ffff7ffd000      140737354125312
rip            0x7ffff7c58740      0x7ffff7c58740 
eflags         0x202               [ IF ]
cs             0x33                51
ss             0x2b                43
ds             0x0                 0
es             0x0                 0
fs             0x0                 0
gs             0x0                 0
fs_base        0x7ffff7fa1740      140737353750336
gs_base        0x0                 0
(gdb) c
Continuing.
[Detaching after vfork from child process 26176]
$ exit
вот что произошло, когда я использовал строку «/bin/sh», которая уже была в коде. Вы можете увидеть выполнение оболочки.

Код: Выделить всё

Breakpoint 2.1, __libc_system (line=0x7fffffffd530 "/bin/sh") at ../sysdeps/posix/system.c:202
warning: 202    ../sysdeps/posix/system.c: No such file or directory
(gdb) i r
rax            0x1                 1
rbx            0x7fffffffdae8      140737488345832
rcx            0x7ffff7d1c574      140737351107956
rdx            0x0                 0
rsi            0x4052a0            4215456
rdi            0x7fffffffd530      140737488344368
rbp            0x0                 0x0
rsp            0x7fffffffd578      0x7fffffffd578
r8             0x0                 0
r9             0x0                 0
r10            0x0                 0
r11            0x202               514
r12            0x1                 1
r13            0x0                 0
r14            0x0                 0
r15            0x7ffff7ffd000      140737354125312
rip            0x7ffff7c58740      0x7ffff7c58740 
eflags         0x202               [ IF ]
cs             0x33                51
ss             0x2b                43
ds             0x0                 0
es             0x0                 0
fs             0x0                 0
gs             0x0                 0
fs_base        0x7ffff7fa1740      140737353750336
gs_base        0x0                 0
(gdb) c
Continuing.
[Detaching after vfork from child process 26188]

Program received signal SIGSEGV, Segmentation fault.
вот что произошло, когда я использовал адрес «/bin/sh» в полезной нагрузке. Все значения в регистрах одинаковы, за исключением rdi, которые указывают на разные адреса, но оба имеют одну и ту же строку внутри. По какой-то причине на этот раз он ничего не делает и просто сразу выдает ошибку.

Код: Выделить всё

execve("./venus_messaging", ["./venus_messaging"], 0x7fffffffdb40 /* 74 vars */) = 0
brk(NULL)                               = 0x405000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffff7fbd000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=100487, ...}) = 0
mmap(NULL, 100487, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7ffff7fa4000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\243\2\0\0\0\0\0"..., 832) = 832
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
fstat(3, {st_mode=S_IFREG|0755, st_size=2125328, ...}) = 0
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
mmap(NULL, 2170256, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ffff7c00000
mmap(0x7ffff7c28000, 1605632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0x7ffff7c28000
mmap(0x7ffff7db0000, 323584, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b0000) = 0x7ffff7db0000
mmap(0x7ffff7dff000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1fe000) = 0x7ffff7dff000
mmap(0x7ffff7e05000, 52624, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7ffff7e05000
close(3)                                = 0
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffff7fa1000
arch_prctl(ARCH_SET_FS, 0x7ffff7fa1740) = 0
set_tid_address(0x7ffff7fa1a10)         = 27271
set_robust_list(0x7ffff7fa1a20, 24)     = 0
rseq(0x7ffff7fa2060, 0x20, 0, 0x53053053) = 0
mprotect(0x7ffff7dff000, 16384, PROT_READ) = 0
mprotect(0x403000, 4096, PROT_READ)     = 0
mprotect(0x7ffff7ffb000, 8192, PROT_READ) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
munmap(0x7ffff7fa4000, 100487)          = 0
socket(AF_INET, SOCK_STREAM, IPPROTO_IP) = 3
setsockopt(3, SOL_SOCKET, SO_REUSEPORT, [1], 4) = 0
bind(3, {sa_family=AF_INET, sin_port=htons(9080), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
listen(3, 3)                            = 0
fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(0x88, 0), ...}) = 0
getrandom("\x7d\xf5\xd8\xd7\xab\x38\xab\x28", 8, GRND_NONBLOCK) = 8
brk(NULL)                               = 0x405000
brk(0x426000)                           = 0x426000
write(1, "Listening on port 9080\n", 23Listening on port 9080
) = 23
accept(3, {sa_family=AF_INET, sin_port=htons(51520), sin_addr=inet_addr("127.0.0.1")}, [16]) = 4
getpeername(4, {sa_family=AF_INET, sin_port=htons(51520), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0
write(1, "Accepted connection from 127.0.0"..., 35Accepted connection from 127.0.0.1
) = 35
sendto(4, "Welcome to the Venus messaging s"..., 80, 0, NULL, 0) = 80
recvfrom(4, "loveandbeauty\n", 1024, 0, NULL, NULL) = 14
sendto(4, "Access granted, you can now send"..., 108, 0, NULL, 0) = 108
write(1, "User authenticated.\n", 20User authenticated.
)   = 20
recvfrom(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2048, 0, NULL, NULL) = 1081
write(1, "Message received:\n", 18Message received:
)     = 18
write(1, "\n", 1
)                       = 1
sendto(4, "Message sent to the Venus space "..., 56, 0, NULL, 0) = 56
write(1, "Message acknowledgement sent.\n", 30Message acknowledgement sent.
) = 30
rt_sigaction(SIGINT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7ffff7c45320}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGQUIT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7ffff7c45320}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7ffff7fb4000
rt_sigprocmask(SIG_BLOCK, ~[], [CHLD], 8) = 0
clone3({flags=CLONE_VM|CLONE_VFORK|CLONE_CLEAR_SIGHAND, exit_signal=SIGCHLD, stack=0x7ffff7fb4000, stack_size=0x9000}, 88) = 27284
munmap(0x7ffff7fb4000, 36864)           = 0
rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
wait4(27284, $ exit
[{WIFEXITED(s) &&  WEXITSTATUS(s) == 0}], 0, NULL) = 27284
rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7ffff7c45320}, NULL, 8) = 0
rt_sigaction(SIGQUIT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7ffff7c45320}, NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=27284, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x7974756100} ---
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault (core dumped)
это след использования строки в коде.

Код: Выделить всё

execve("./venus_messaging", ["./venus_messaging"], 0x7fffffffdb40 /* 74 vars */) = 0
brk(NULL)                               = 0x405000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffff7fbd000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=100487, ...}) = 0
mmap(NULL, 100487, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7ffff7fa4000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\243\2\0\0\0\0\0"..., 832) = 832
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
fstat(3, {st_mode=S_IFREG|0755, st_size=2125328, ...}) = 0
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
mmap(NULL, 2170256, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ffff7c00000
mmap(0x7ffff7c28000, 1605632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0x7ffff7c28000
mmap(0x7ffff7db0000, 323584, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b0000) = 0x7ffff7db0000
mmap(0x7ffff7dff000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1fe000) = 0x7ffff7dff000
mmap(0x7ffff7e05000, 52624, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7ffff7e05000
close(3)                                = 0
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffff7fa1000
arch_prctl(ARCH_SET_FS, 0x7ffff7fa1740) = 0
set_tid_address(0x7ffff7fa1a10)         = 27492
set_robust_list(0x7ffff7fa1a20, 24)     = 0
rseq(0x7ffff7fa2060, 0x20, 0, 0x53053053) = 0
mprotect(0x7ffff7dff000, 16384, PROT_READ) = 0
mprotect(0x403000, 4096, PROT_READ)     = 0
mprotect(0x7ffff7ffb000, 8192, PROT_READ) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
munmap(0x7ffff7fa4000, 100487)          = 0
socket(AF_INET, SOCK_STREAM, IPPROTO_IP) = 3
setsockopt(3, SOL_SOCKET, SO_REUSEPORT, [1], 4) = 0
bind(3, {sa_family=AF_INET, sin_port=htons(9080), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
listen(3, 3)                            = 0
fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(0x88, 0), ...}) = 0
getrandom("\x3d\x1f\x1d\x36\x81\xf1\x5e\x11", 8, GRND_NONBLOCK) = 8
brk(NULL)                               = 0x405000
brk(0x426000)                           = 0x426000
write(1, "Listening on port 9080\n", 23Listening on port 9080
) = 23
accept(3, {sa_family=AF_INET, sin_port=htons(33584), sin_addr=inet_addr("127.0.0.1")}, [16]) = 4
getpeername(4, {sa_family=AF_INET, sin_port=htons(33584), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0
write(1, "Accepted connection from 127.0.0"..., 35Accepted connection from 127.0.0.1
) = 35
sendto(4, "Welcome to the Venus messaging s"..., 80, 0, NULL, 0) = 80
recvfrom(4, "loveandbeauty\n", 1024, 0, NULL, NULL) = 14
sendto(4, "Access granted, you can now send"..., 108, 0, NULL, 0) = 108
write(1, "User authenticated.\n", 20User authenticated.
)   = 20
recvfrom(4, "\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2"..., 2048, 0, NULL, NULL) = 1081
write(1, "Message received:\n", 18Message received:
)     = 18
write(1, "\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2\2"..., 1024/bin/sh
) = 1024
sendto(4, "Message sent to the Venus space "..., 56, 0, NULL, 0) = 56
write(1, "Message acknowledgement sent.\n", 30Message acknowledgement sent.
) = 30
rt_sigaction(SIGINT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7ffff7c45320}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGQUIT,  {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7ffff7c45320}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7ffff7fb4000
rt_sigprocmask(SIG_BLOCK, ~[], [CHLD], 8) = 0
clone3({flags=CLONE_VM|CLONE_VFORK|CLONE_CLEAR_SIGHAND, exit_signal=SIGCHLD, stack=0x7ffff7fb4000, stack_size=0x9000}, 88) = 27496
munmap(0x7ffff7fb4000, 36864)           = 0
rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
wait4(27496, sh: 1: : not found
[{WIFEXITED(s) && WEXITSTATUS(s) == 127}], 0, NULL) = 27496
rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7ffff7c45320}, NULL, 8) = 0
rt_sigaction(SIGQUIT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7ffff7c45320}, NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=27496, si_uid=1000, si_status=127, si_utime=0, si_stime=0} ---
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x7974756100} ---
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault (core dumped)
9 строк снизу вы можете увидеть ошибку sh: 1: : not Found вместо выполнения оболочки, как это было, когда я использовал строку, которая была в коде.
9 строк снизу вы можете увидеть ошибку sh: 1: : not Found вместо выполнения оболочки, как это было, когда я использовал строку, которая была в коде.
9 строк снизу вы можете увидеть ошибку sh: 1: : not Found вместо выполнения оболочки, как это было, когда я использовал строку, которая была в коде. p>
Единственная разница между этими двумя случаями заключается в том, где находится строка «/bin/sh». Почему это вызывает проблемы?
Будем очень признательны за любую помощь, спасибо!

Подробнее здесь: https://stackoverflow.com/questions/792 ... it-with-bi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Запрос FastAPI POST к конечной точке /submit_response возвращает ошибку 404 Not Found
    Anonymous » » в форуме Python
    0 Ответы
    75 Просмотры
    Последнее сообщение Anonymous
  • Заголовок: Конечная точка Spring Boot API возвращает 404 Not Found для запроса на регистрацию (без баз данных)
    Anonymous » » в форуме JAVA
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Как устранить ошибку commons.math3 not Found в проекте JavaFx?
    Гость » » в форуме JAVA
    0 Ответы
    54 Просмотры
    Последнее сообщение Гость
  • Как устранить ошибку «HTTP Error 404.3 — Not Found»?
    Anonymous » » в форуме C#
    0 Ответы
    65 Просмотры
    Последнее сообщение Anonymous
  • Развернутые функции Azure возвращают ошибку 404 Not Found.
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Linux»