/bin/sh закрывается немедленно, не дожидаясь ввода данных пользователем

в сервисе nas4free click -> CIFS/SMB внизу экрана в поле Дополнительные параметры введите

ntlm аутентификация = да

1
06.04.2021, 05:46
1 ответ

Наконец-то я решил эту проблему.

Системная функция библиотеки C ()не выполняется, если стек не выровнен по 16 -байтам.

В моем случае я забыл выровнять стек по границе 16 -байт, поэтому system("/bin/sh");выполнялся неправильно и, следовательно, не запускал оболочку.

На самом деле, в x86 -64, System V ABI требует, чтобы стек был выровнен по 16 -байтам перед выполнением ассемблерной инструкции CALL. В противном случае результат непредсказуем. Таким образом, это относится не только к системной функции (), но и к любой функции.

Поскольку мой стек был смещен на 8 байт, добавление дополнительного RET в цепочку ROP приводит к правильному выравниванию стека.

Теперь у меня все работает.

1
28.04.2021, 22:54

Теги

Похожие вопросы